使用pyinstaller打包python程序,有一个" NoModuleFindError"

时间:2018-03-12 09:43:12

标签: python pyinstaller

我使用pyinstaller将我的python程序打包成可执行程序(exe)。

我的程序版本:

Pyinstaller:3.3.1

Python:3.6.1 视窗: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,错误信息是:

  

Traceback(最近一次调用最后一次):File" data_processing_gui.py",   第12行,在文件中   " C:\用户\番禹\ anaconda3 \ lib中\站点包\ PyInstaller \装载机\ pyimod03_importers.py&#34 ;,   第631行,在exec_module中       exec(字节码,模块。字典)文件" site-packages \ radiomics__init __。py",第15行,在文件中   " C:\用户\番禹\ anaconda3 \ lib中\站点包\ PyInstaller \装载机\ pyimod03_importers.py&#34 ;,   第631行,在exec_module中       exec(字节码,模块。字典)文件" site-packages \ radiomics \ imageoperations.py",第6行,中
  文件   " C:\用户\番禹\ anaconda3 \ lib中\站点包\ PyInstaller \装载机\ pyimod03_importers.py&#34 ;,   第631行,在exec_module中       exec(字节码,模块。字典)文件" site-packages \ pywt__init __。py",第17行,在文件中   " C:\用户\番禹\ anaconda3 \ lib中\站点包\ PyInstaller \装载机\ pyimod03_importers.py&#34 ;,   第631行,在exec_module中       exec(字节码,模块。字典)文件" site-packages \ pywt_functions.py",第17行,在文件中   " C:\用户\番禹\ anaconda3 \ lib中\站点包\ PyInstaller \装载机\ pyimod03_importers.py&#34 ;,   第714行,在load_module中       module = loader.load_module(fullname)文件" pywt / _extensions / _pywt.pyx",第1行,在init pywt._extensions._pywt中   (pywt_extensions_pywt.c:31281)ModuleNotFoundError:没有名为的模块   ' pywt._extensions._cwt' [7564]无法执行脚本   data_processing_gui

程序似乎无法找到指定的包路径(pywt._extensions._cwt),但是,我已经在pyinstaller的参数列表中添加了路径。

起初,我想我的pyinstaller可能有问题,所以我试图重新安装它。然后我编写一个简单的python程序来测试它,它运行正常。

我已经尝试了很多但是无法解决问题,所以我来这里寻求帮助,如果有人能给出任何建议,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

我在以下问题ModuleNotFoundError: No module named 'pandas._libs.tslibs.timedeltas'

的答案中找到了我的问题的解决方案

我无法解释原因,但它确实解决了我的问题。

解决方案是: 使用pyinstaller生成“.spec”文件后,将缺少的模块添加到“hiddenimport = []”的“.spec”文件中,如下所示:

hiddenimport=["pywt","pywt._estentions._cwt"]

然后使用此文件生成您的exe文件:

pyinstaller my.spec