我使用pyinstaller将python程序打包为可执行程序(exe)。
我的程序版本:
Pyinstaller的:3.3.1
的Python:3.6.1的Windows:10-10.0.16299-SP0
我可以在命令行窗口中使用命令“ python data_processing_gui.py”运行data_processing_gui.py文件,而不会出现任何错误。
我使用命令打包我的python程序(名称为data_processing_gui.py):
pyinstaller -F -p C:\Users\fanyu\Anaconda3\Lib;C:\Users\fanyu\Anaconda3\Lib\site-packages;C:\Users\fanyu\Anaconda3\Lib\site-packages\PyQt5\Qt\bin;C:\Users\fanyu\Anaconda3\Lib\site-packages\pydicom;C:\Users\fanyu\Anaconda3\Lib\site-packages\radiomics;C:\Users\fanyu\Anaconda3\Lib\site-packages\pywt;C:\Users\fanyu\Anaconda3\Lib\site-packages\pywt\_extensions;C:\Users\fanyu\Anaconda3\Lib\site-packages\tensorflow;C:\Users\fanyu\Anaconda3\Lib\site-packages\SimpleITK;C:\Users\fanyu\Anaconda3\Lib\site-packages\PIL;C:\Users\fanyu\Anaconda3\Lib\site-packages\pandas;C:\Users\fanyu\Anaconda3\Lib\site-packages\nrrd;C:\Users\fanyu\Anaconda3\Lib\site-packages\numpy -i C:\Users\fanyu\Desktop\work\package\image\doctor.ico data_processing_gui.py
当我在Windows的命令行窗口中运行以上代码时,没有错误,但是当我运行目标程序(data_progressing_gui.exe)时,有一个ModuleNotFindError错误信息是:
追溯(最近一次通话):文件“ data_processing_gui.py”,第12行,在exec_module中的文件“ c:\ users \ fanyu \ anaconda3 \ lib \ site-packages \ PyInstaller \ loader \ pyimod03_importers.py”中,行631 EXEC(字节码,模块字典)文件“站点包\ radiomics__init __ PY。”,第15行,在文件“C:\用户\番禺\ anaconda3 \ LIB \站点包\ PyInstaller \装载机\ pyimod03_importers.py”,行631,在exec_module EXEC(字节码,模块字典)文件“站点包\ radiomics \ imageoperations.py”,第6行,在
文件“C:\用户\番禹\ anaconda3 \ lib中\站点包\ PyInstaller \装载机\ pyimod03_importers.py”,线路631,在exec_module EXEC(字节码,模块。字典)在exec_module exec中的文件“ c:\ users \ fanyu \ anaconda3 \ lib \ site-packages \ PyInstaller \ loader \ pyimod03_importers.py”的文件“ site-packages \ pywt__init __。py”,行17,在exec_module exec(字节码,模块dict),文件“ c:\ users \ fanyu \ anaconda3 \ lib \ site-packages \ PyInstaller \ loader \ pyimod03_importers.py”的文件“ site-packages \ pywt_functions.py”,行17,在714行load_module模块= loader.load_module(全名)文件“ pywt / _extensions / _pywt.pyx”,第1行,初始化pywt._extensions._pywt(pywt_extensions_pywt.c:31281)ModuleNotFoundError:没有名为'pywt._extensions._cwt'的模块7564]无法执行脚本data_processing_gui
似乎该程序找不到指定的包路径(pywt._extensions._cwt),但是,我已将该路径添加到pyinstaller的参数列表中。
起初,我认为pyinstaller可能有问题,所以我尝试重新安装它。然后,我编写了一个简单的python程序对其进行测试,它可以正常运行。
我已经尝试了很多,但还是无法解决,所以我在这里寻求帮助,如果有人可以提供任何建议,我将不胜感激。
解决方案
我无法解释原因,但确实可以解决我的问题。
解决方案是:使用pyinstaller生成“ .spec”文件后,将缺少的模块添加到“ .spec”文件中的“ hiddenimport = []”,如下所示:
hiddenimport=["pywt","pywt._estentions._cwt"]
然后使用此文件生成您的exe文件:
pyinstaller my.spec