Python pywt`\u ctw`模块上的Pyinstaller导入错误
使用Pyinstaller编译程序时,Pywt未正确导入Python pywt`\u ctw`模块上的Pyinstaller导入错误,python,pyinstaller,pywt,Python,Pyinstaller,Pywt,使用Pyinstaller编译程序时,Pywt未正确导入\u cwt模块。我验证了\u cwt.py是否存在于我的pywt根目录中(路径上的站点包中),并且\u cwt.pyd是否存在于pywt\\u扩展目录中。我可以成功地从Python导入pywt。下面是一个最小(非)工作示例,用于说明importorror回溯 程序pywt_test.py # -*- coding: utf-8 -*- try: import sys, traceback import pywt p
\u cwt
模块。我验证了\u cwt.py
是否存在于我的pywt根目录中(路径上的站点包中),并且\u cwt.pyd
是否存在于pywt\\u扩展目录中。我可以成功地从Python导入pywt。下面是一个最小(非)工作示例,用于说明importorror
回溯
程序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\u test.spec
运行命令:pywt_test.exe
pywt\u error\u 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
回溯(最近一次呼叫最后一次):
文件“pywt_test.py”,第10行,在
加载模块中的文件“c:\users\user\appdata\local\temp\pip-build-3zvqo7\pyinstaller\pyinstaller\loader\pyimod03\u importers.py”,第389行
文件“site packages\pywt\\uuuuu init\uuuuuuu.py”,第16行,在
加载模块中的文件“c:\users\user\appdata\local\temp\pip-build-3zvqo7\pyinstaller\pyinstaller\loader\pyimod03\u importers.py”,第546行
文件“pywt\\u extensions\\u pywt.pyx”,第1行,在init pywt.\u extensions.\u pywt(pywt\\u extensions\\u pywt.c:32588)中
ImportError:没有名为_cwt的模块
我尝试将\u cwt
添加到pathex、HiddeImports等中。没有任何更改错误
如何使用Pyinstaller加载\u cwt
,以及整个pywt包
版本,供参考:
- Pywt:0.5.1
- Pyinstaller:3.2.1
- Python:Windows 7上的2.7.12 64位64位(Anaconda)
只需将其添加到隐藏导入:
...
hiddenimports=['pywt._extensions._cwt'],
...
正如wedesoft提到的,添加隐藏导入是有效的。为了避免将来出现此类错误,您可以添加一个文件
“\PyInstaller\hooks\hook pywt.py”
使用字符串:
hiddenimports=['pywt.\u extensions.\u cwt']
我只是简单地获取了一个像“\PyInstaller\hooks\hook patsy.py”这样的现有文件,将hiddenimports行更改为上面的一行,并保存为hook-pywt.py。在您更新PyInstaller之前,这应该可以正常工作。我没有这样的文件。我有一个名为py pyinstaller的文件夹,但其中有一个名为portfile的文件。@kylefoley76-可能是pyinstaller存在安装问题?您遵循安装()了吗?