【问题标题】:Using pyinstaller to package python program and there is a "NoModuleFindError"使用pyinstaller打包python程序出现“NoModuleFindError”
【发布时间】:2018-08-20 06:56:45
【问题描述】:

我使用 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(最近一次调用最后一次):文件“data_processing_gui.py”, 第 12 行,在文件中 "c:\users\fanyu\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", 第 631 行,在 exec_module 中 exec(bytecode, module.dict) File "site-packages\radiomics__init__.py",第 15 行,在 File "c:\users\fanyu\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", 第 631 行,在 exec_module 中 exec(bytecode, module.dict) 文件“site-packages\radiomics\imageoperations.py”,第 6 行,在
文件 "c:\users\fanyu\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", 第 631 行,在 exec_module 中 exec(bytecode, module.dict) File "site-packages\pywt__init__.py",第 17 行,在 File "c:\users\fanyu\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", 第 631 行,在 exec_module 中 exec(bytecode, module.dict) File "site-packages\pywt_functions.py",第 17 行,在 File "c:\users\fanyu\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", 第 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程序来测试它,它运行正常。

我试了很多都解决不了,所以特地来寻求帮助,如果有人可以提供任何建议,我将不胜感激。

【问题讨论】:

    标签: python pyinstaller


    【解决方案1】:

    我在以下问题ModuleNotFoundError: No module named 'pandas._libs.tslibs.timedeltas'的答案中找到了我的问题的解决方案

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

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

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

    然后用这个文件生成你的exe文件:

    pyinstaller my.spec
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多