Pyinstaller 生成的 exe 不能在另一台计算机上 运行
Pyinstaller-generated exe cannot run on another computer
我的电脑OS是64位win 10。Python2.7,32位。
我的代码是plot.py
,简单如下:
import matplotlib.pyplot as plt
import FileDialog
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()
当我执行pyinstaller -F plot.py
时,生成的
plot.exe 在我当前的计算机上按预期工作。但是,如果我尝试在不同的 32 位 Windows 7 计算机上 运行 它,我会收到错误消息:
Traceback (most recent call last):
File "site-packages\GUI_tempCtrl\plot.py", line 3, in <module>
File "lib\site-packages\matplotlib\pyplot.py", line 3147, in plot
File "lib\site-packages\matplotlib\pyplot.py", line 928, in gca
File "lib\site-packages\matplotlib\pyplot.py", line 578, in gcf
File "lib\site-packages\matplotlib\pyplot.py", line 527, in figure
File "lib\site-packages\matplotlib\backends\backend_tkagg.py", line 84, in new
_figure_manager
File "lib\site-packages\matplotlib\backends\backend_tkagg.py", line 92, in new
_figure_manager_given_figure
File "lib\lib-tk\Tkinter.py", line 1814, in __init__
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
C:/Users/ADMINI~1/AppData/Local/Temp/lib/tcl8.5 C:/Users/Administrator/lib/t
cl8.5 C:/Users/lib/tcl8.5 C:/Users/Administrator/library C:/Users/library C:/Use
rs/tcl8.5.15/library C:/tcl8.5.15/library
This probably means that Tcl wasn't installed properly.
Failed to execute script plot
您可以尝试将 pyinstaller 降级到 v3.1 并在您的第一台计算机上重建您的 exe 文件以解决此问题。
或者,您可以通过将 TCL_LIBRARY
环境变量设置为 C:\Python27\tcl\tcl8.5\
(或 tcl8.5 所在的位置)
来在第二台计算机上修复它
PyInstaller 在 Windows 7 和 Windows XP 上有 a known issue Tkinter 应用程序。
由于这个问题已经两年没有解决,所以我继续 started a bounty。在问题得到解决之前,您可以尝试一些解决方法:
解决方法 1 - 手动复制丢失的文件
如 a related issue 中所述,您可以从本地 Python 安装中手动复制丢失的文件。
- 找到您本地的 Python 安装。 (
%LocalAppData%\Programs\Python
)
- 复制丢失的文件夹(
...\Python36-32\tcl\<missing_folder>
)
- 将副本移动到应用程序的
tcl
文件夹 (...\dist\<app_name>\tcl\<missing_folder>
)
解决方法 2 - 运行 和 --onefile
运行在 --onefile
模式下使用 PyInstaller 似乎可以避免这个问题。
但是,请注意 运行 在单文件模式下会增加启动时间。
解决方法 3 - 降级到 PyInstaller 3.1.0
pip install pyinstaller==3.1.0
According to ugoertz,降级到 PyInstaller 3.1.0 解决了这个问题。
Downgrading to 3.1.0 (and also downgrading setuptools to 19.2 because of the problem described in #1941) fixed the issue for me.
我的电脑OS是64位win 10。Python2.7,32位。
我的代码是plot.py
,简单如下:
import matplotlib.pyplot as plt
import FileDialog
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()
当我执行pyinstaller -F plot.py
时,生成的
plot.exe 在我当前的计算机上按预期工作。但是,如果我尝试在不同的 32 位 Windows 7 计算机上 运行 它,我会收到错误消息:
Traceback (most recent call last):
File "site-packages\GUI_tempCtrl\plot.py", line 3, in <module>
File "lib\site-packages\matplotlib\pyplot.py", line 3147, in plot
File "lib\site-packages\matplotlib\pyplot.py", line 928, in gca
File "lib\site-packages\matplotlib\pyplot.py", line 578, in gcf
File "lib\site-packages\matplotlib\pyplot.py", line 527, in figure
File "lib\site-packages\matplotlib\backends\backend_tkagg.py", line 84, in new
_figure_manager
File "lib\site-packages\matplotlib\backends\backend_tkagg.py", line 92, in new
_figure_manager_given_figure
File "lib\lib-tk\Tkinter.py", line 1814, in __init__
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
C:/Users/ADMINI~1/AppData/Local/Temp/lib/tcl8.5 C:/Users/Administrator/lib/t
cl8.5 C:/Users/lib/tcl8.5 C:/Users/Administrator/library C:/Users/library C:/Use
rs/tcl8.5.15/library C:/tcl8.5.15/library
This probably means that Tcl wasn't installed properly.
Failed to execute script plot
您可以尝试将 pyinstaller 降级到 v3.1 并在您的第一台计算机上重建您的 exe 文件以解决此问题。
或者,您可以通过将 TCL_LIBRARY
环境变量设置为 C:\Python27\tcl\tcl8.5\
(或 tcl8.5 所在的位置)
PyInstaller 在 Windows 7 和 Windows XP 上有 a known issue Tkinter 应用程序。
由于这个问题已经两年没有解决,所以我继续 started a bounty。在问题得到解决之前,您可以尝试一些解决方法:
解决方法 1 - 手动复制丢失的文件
如 a related issue 中所述,您可以从本地 Python 安装中手动复制丢失的文件。
- 找到您本地的 Python 安装。 (
%LocalAppData%\Programs\Python
) - 复制丢失的文件夹(
...\Python36-32\tcl\<missing_folder>
) - 将副本移动到应用程序的
tcl
文件夹 (...\dist\<app_name>\tcl\<missing_folder>
)
解决方法 2 - 运行 和 --onefile
运行在 --onefile
模式下使用 PyInstaller 似乎可以避免这个问题。
但是,请注意 运行 在单文件模式下会增加启动时间。
解决方法 3 - 降级到 PyInstaller 3.1.0
pip install pyinstaller==3.1.0
According to ugoertz,降级到 PyInstaller 3.1.0 解决了这个问题。
Downgrading to 3.1.0 (and also downgrading setuptools to 19.2 because of the problem described in #1941) fixed the issue for me.