在用Pyinstaller编译程序时,Pywt没有正确导入_cwt模块。我验证了_cwt.py存在于我的pywt根中(在路径上的站点包中),_cwt.pyd在pywt\_extensions dir中。我可以成功地从Python导入pywt。下面是一个演示ImportError跟踪的最小(非)工作示例。
程序pywt_test.py
# -*- coding: utf-8 -*-
try:
import sys, traceback
import pywt
print pywt.__version__
except ImportError:
type_, value_, traceback_ = sys.exc_info()
e_msg = traceback.format_exception(type_, value_, traceback_)
with open('pywt_error_log.txt','w') as f:
f.write(''.join(e_msg))Pyinstaller规范文件pywt_test.spec
# -*- mode: python -*-
block_cipher = None
a = Analysis(['pywt_test.py'],
pathex=['C:\\Users\\user', 'C:\\Users\\user'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='pywt_test',
debug=False,
strip=False,
upx=False,
console=True)Pyinstall编译命令:pyinstaller pywt_test.spec。
ran命令:pywt_test.exe
pywt_error_log.txt含量
Traceback (most recent call last):
File "pywt_test.py", line 10, in <module>
File "c:\users\user\appdata\local\temp\pip-build-3zvqo7\pyinstaller\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
File "site-packages\pywt\__init__.py", line 16, in <module>
File "c:\users\user\appdata\local\temp\pip-build-3zvqo7\pyinstaller\PyInstaller\loader\pyimod03_importers.py", line 546, in load_module
File "pywt\_extensions\_pywt.pyx", line 1, in init pywt._extensions._pywt (pywt\_extensions\_pywt.c:32588)
ImportError: No module named _cwt我尝试将_cwt添加到pathex,隐藏导入等。没有任何更改错误。
如何使用Pyinstaller加载_cwt和整个pywt包?
供参考的版本:
发布于 2017-05-18 12:18:59
只需将其添加到隐藏的导入:
...
hiddenimports=['pywt._extensions._cwt'],
...发布于 2018-09-04 16:19:42
正如我们所提到的,添加隐藏的导入是有效的。为了避免将来出现这样的错误,可以添加一个文件。
‘\PyInstaller\hooks\钩子-pywt.py’
用绳子:
hiddenimports=['pywt._extensions._cwt']
我只需获取一个现有文件,如‘\PyInstaller\hooks\钩子-patsy.py’,将隐藏导入行更改为上面的一行,并将其保存为钩子-pywt.py。在更新您的PyInstaller之前,这应该是有效的。
https://stackoverflow.com/questions/41998403
复制相似问题