python - 由 pywin32 生成的 python 可执行文件中的 dll 加载错误

标签 python architecture executable py2exe win32com

我使用 py2exe 使用 64 位 python 解释器和 32 位 python 解释器创建了 python 可执行文件。

在我的程序中,我使用模块 pywin32 com,因此我在创建可执行文件之前下载并安装了该程序的 64 位和 32 位版本。

64 位 exe 运行正常,但 32 位 exe 存在以下问题:

Traceback (most recent call last):
  File "program.py", line 11, in <module>
  File "win32com\__init__.pyc", line 5, in <module>
  File "win32api.pyc", line 12, in <module>
  File "win32api.pyc", line 10, in __load
ImportError: DLL load failed: The specified procedure could not be found.

我通过直接运行源代码尝试了这两个版本,即python program.pyC:\python_32\python.exe program.py并且都工作正常。

注意我在 64 位 Windows 7 计算机上测试了 64 位 exe,在 32 位 Windows XP 计算机上测试了 32 位 exe。

最佳答案

比以往任何时候都古老,但我今天偶然发现了这个问题,如果其他人这样做,我运行的是:

从命令行

python/c/Python26/Scripts/pywin32_postinstall.py -install (更改值以适应)。有效:

$ python /c/Python26/Scripts/pywin32_postinstall.py -install
Copied pythoncom26.dll to C:\WINDOWS\system32\pythoncom26.dll
Copied pythoncomloader26.dll to C:\WINDOWS\system32\pythoncomloader26.dll
Copied pywintypes26.dll to C:\WINDOWS\system32\pywintypes26.dll
Registered: Python.Interpreter
Registered: Python.Dictionary
Registered: Python
-> Software\Python\PythonCore\2.6\Help[None]=None
-> Software\Python\PythonCore\2.6\Help\PythonwinReference[None]='c:\\Python26\\Lib\\site-packages\\PyWin32.chm'
Pythonwin has been registered in context menu
Creating directory c:\Python26\Lib\site-packages\win32com\gen_py
Shortcut for Pythonwin created
Shortcut to documentation created
The pywin32 extensions were successfully installed.`

(在 WinXP SP3 上)

关于python - 由 pywin32 生成的 python 可执行文件中的 dll 加载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6379195/

相关文章:

python - 使用Vue + Django模板语言时如何解决双花括号问题?

javascript - Backbone 和 Django,寻找更好的客户端架构

javascript - 在可扩展的 JavaScript 架构上放置 DOM 交互的位置

python - 如何使用正则表达式删除 latex 文件中的所有数学表达式

python - 如何从链接中获取图像?

python - 如何按 Pandas 数据框中的对象属性进行过滤

ios - 为创建动态数据库的 iOS 应用程序设计 Core Data 托管对象模型

shell - 为什么我无法从 shell 脚本运行可执行文件

c++ - 没有扩展名的Linux可执行文件的共享库(.so)之间的区别?

java - 执行 Runtime.getRuntime().exec(),参数之间留有空格