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多个其他模块中找到这两个模块(并且只有这两个模块).
我在打包导入的 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)
详细说明请参阅此处。