Python 使用 PyInstaller 创建的可执行文件不会 运行
Python executable created with PyInstaller doesn't run
我有一个简单的脚本来绘制 ROC 曲线(使用 sklearn
和 matplotlib
)。我使用 PyInstaller
从这个脚本创建了一个可执行文件。脚本本身运行并完美运行,但可执行文件给了我这个错误:
No module named 'tkinter'
我尝试了什么:
1) 重新创建不带 --onefile
标志的可执行文件(以防任何 .dll 丢失)(失败)
2) 在我的脚本中手动导入 tkinter
(失败)
实际上,当我添加 import tkinter
时,错误更改为(以防万一):
No module named 'tkinter.filedialog'
我很困惑。我用了很多次PyInstaller
,但还是第一次遇到这种错误。
编辑 .spec 文件并将模块的路径放入 'pathex'(关于分析)。您可以使用 module.__file__
发现正确的模块路径。
在你的情况下:
>>> import tkinter.filedialog
>>> tkinter.filedialog.__file__
'/usr/lib/python3.5/tkinter/filedialog.py'
在 .spec 文件上:
a = Analysis(['main.py'],
pathex=['/usr/lib/python3.5/tkinter/'],
binaries=None,
datas=None,
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
我有一个简单的脚本来绘制 ROC 曲线(使用 sklearn
和 matplotlib
)。我使用 PyInstaller
从这个脚本创建了一个可执行文件。脚本本身运行并完美运行,但可执行文件给了我这个错误:
No module named 'tkinter'
我尝试了什么:
1) 重新创建不带 --onefile
标志的可执行文件(以防任何 .dll 丢失)(失败)
2) 在我的脚本中手动导入 tkinter
(失败)
实际上,当我添加 import tkinter
时,错误更改为(以防万一):
No module named 'tkinter.filedialog'
我很困惑。我用了很多次PyInstaller
,但还是第一次遇到这种错误。
编辑 .spec 文件并将模块的路径放入 'pathex'(关于分析)。您可以使用 module.__file__
发现正确的模块路径。
在你的情况下:
>>> import tkinter.filedialog
>>> tkinter.filedialog.__file__
'/usr/lib/python3.5/tkinter/filedialog.py'
在 .spec 文件上:
a = Analysis(['main.py'],
pathex=['/usr/lib/python3.5/tkinter/'],
binaries=None,
datas=None,
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)