我试图在windows7(x64)上使用pyinstaller(3.0)生成可执行文件(x86)。我已经用pip安装了cffi和其他所需的软件包。我可以从命令行成功导入cffi和_cffi_backend模块:
>>> import cffi
>>> import _cffi_backend
>>> cffi.__file__
'C:\\Program Files (x86)\\Python27\\lib\\site-packages\\cffi\\__init__.pyc'
>>> _cffi_backend.__file__
'C:\\Program Files (x86)\\Python27\\lib\\site-packages\\_cffi_backend.pyd'
>
尝试运行生成的可执行文件时,我收到以下错误:
File "C:\Program Files (x86)\Python27\lib\site-packages\cryptography\hazmat\bindings\openssl\binding.py", line 13, in <module>
from cryptography.hazmat.bindings._openssl import ffi, lib
File "c:\program files (x86)\python27\lib\site-packages\PyInstaller-3.0-py2.7.egg\PyInstaller\loader\pyimod03_importers.py", line 517, in load_module
module = imp.load_module(fullname, fp, filename, ext_tuple)
ImportError: No module named _cffi_backend
您可能会看到完整的启动日志here。
顺便说一句,我用mingw编译了libcffi库并得到了一个DLL文件。然后复制到其中一个库路径,我再次在应用程序启动时遇到相同的错误。
我不知道为什么_cffi_backend库无法在应用程序启动时加载,即使它存在并且在python路径中也是如此。我不擅长python,不幸的是我被困在这近2天,任何建议和指导都将受到赞赏。
感谢。
答案 0 :(得分:4)
使用pyinstaller构建时,只需添加--hidden-import=_cffi_backend
选项。