PyInstaller未能包含来自C:\ Python27\Lib的一些模块

Bob*_*obC 4 python import pyinstaller

我一直在反复制作Tkinter实用程序的PyInstaller可执行文件,今天早上突然出现的可执行文件失败,C:\ Python27\Lib中的模块出现"无法导入"错误,例如"timeit"和"bisect" ".

该脚本可以自行运行.只有可执行文件有问题.

什么可能改变导致这种行为的想法?或者如何强制修复?

[编辑]以下是可执行文件报告的特定错误:

Traceback (most recent call last):
  File "<string>", line 35, in <module>
  File "../..\utils\InterpolatedArray.py", line 12, in <module>
    import bisect
ImportError: No module named bisect
Run Code Online (Sandbox Code Playgroud)

当我注释掉这个模块的使用(绕过bisect的导入)时,它会导致timeit导入失败.运行脚本本身时不会发生这些错误.

[EDIT2] Pyinstaller创建它需要的目录(./build和./dist),并且没有权限问题.pyinstaller构建完成没有错误.

[EDIT3]这是我正在使用的构建命令:

pyinstaller -F MyMainModule.py
Run Code Online (Sandbox Code Playgroud)

Bob*_*obC 10

找到一个修复,如果不是原因.这是我更新的构建行:

pyinstaller --hidden-import=timeit --hidden-import=bisect -F MyMainModule.py
Run Code Online (Sandbox Code Playgroud)

仍然不确定为什么PyInstaller突然忘记了如何在构建中正确包含的20多个其他模块中找到这两个模块(并且只有这两个模块).


Spa*_*ine 5

我在打包导入的 Python 脚本时遇到类似的问题openpyxl。这是我的解决方案。

第1步:安装python模块openpyxl

$ wine python.exe Scripts/pip.exe install openpyxl
Run Code Online (Sandbox Code Playgroud)

第二步:添加openpyxl路径

openpyxl路径 ( ~/.wine/drive_c/Python27/Lib/site-packages) 附加到应用程序规范文件中的对象pathex中(例如, )。AnalysisProcessSpreadsheet.spec

a = Analysis(['ProcessSpreadsheet.py'],
             pathex=['C:\\Python27\\Scripts', '~/.wine/drive_c/Python27/Lib/site-packages'],
             binaries=None,
             datas=None,
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
Run Code Online (Sandbox Code Playgroud)

第 3 步:重建

$ wine pyinstaller.exe ProcessSpreadsheet.spec
Run Code Online (Sandbox Code Playgroud)

详细说明请参阅此处。