Python 使用 PyInstaller 创建的可执行文件不会 运行

Python executable created with PyInstaller doesn't run

我有一个简单的脚本来绘制 ROC 曲线(使用 sklearnmatplotlib)。我使用 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)