3

原帖在这里: http: //mail.python.org/pipermail/python-win32/2010-December/011011.html

我在用:

  • 操作系统:64 位 Windows 7 专业版
  • Python:python-2.7.1.amd64
  • Python win32 扩展:pywin32-214.win-amd64-py2.7
  • Py2exe:py2exe-0.6.9.win64-py2.7.amd64

我正在尝试为 Windows 构建图标覆盖。它在 32 位 Windows 上运行良好,但在 64 位 Windows 7 上无法运行。

以下是我为测试创建的 Python 模块:

  1. test_icon_overlay.py: ( http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0002.obj ) com 服务器在 Python 中创建,用于添加复选标记覆盖图标 (C: \icons\test.ico) 在“C:\icons”文件夹中

  2. setup_VI.py:(http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0003.obj)创建 test_icon_overlay.dll 用于分发的安装文件。

  3. icons.zip:(http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0001.zip)进行测试,您应该在 C:\ 中提取 icons.zip

C:\icons当我python test_icon_overlay.py在 Windows 命令提示符下执行并重新启动时,图标覆盖出现在文件夹上explorer.exe。但它不适用于使用创建的 dll 文件setup_VI.py

我已经使用创建了 dll 文件python setup_VI.py py2exe,然后尝试使用regsvr32 test_icon_overlay.dll. 注册失败并出现 Windows 错误消息Error 0x80040201 while registering shell extension

然后我打开了记录器,Python27/Lib/site-packages/py2exe/boot_com_servers.py这是我要进入的comerror.txt回溯regsvr32 test_icon_overlay.dll

PATH is ['C:\\root\\avalon\\module\\sync\\python\\src\\dist\\library.zip']
Traceback (most recent call last):
  File "boot_com_servers.py", line 37, in <module>
pywintypes.error: (126, 'GetModuleFileName', 'The specified module could not
be found.')
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'DllRegisterServer' is not defined

看起来win32api.GetModuleFileName(sys.frozendllhandle)在 64 位 Windows 7 上构建的 dll 可能存在问题。

此外,我看到pywin32-214.win-amd64-py2.7在 64 位 Windows 7 上的安装完成并出现错误消息:快照

close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr

有什么我做错了吗?对此的任何帮助都将受到高度赞赏。

4

1 回答 1

5

在 64 位 Python 上的 py2exe 中有一个错误。由 py2exe 初始化的 sys.frozendllhandle 无效,导致 win32api.GetModuleFileName(sys.frozendllhandle) 失败。

您可能想在http://www.lfd.uci.edu/~gohlke/pythonlibs/#py2exe尝试修补的 py2exe 安装程序

于 2011-01-06T23:28:47.193 回答