Reputation: 1419
I have a basic Python script which uses Tkinter.
from Tkinter import Tk
from tkFileDialog import askdirectory
Tk().withdraw()
print askdirectory()
After compiling my script with PyInstaller, I tried to run my program on Windows 7 (64-bit) computer which didn't have Python installed.
It raised this error:
Can't find a usable init.tcl in the following directories: [list of directories]
This probably means that Tcl wasn't installed properly
Why does my script fail to find init.tcl
after compiling with PyInstaller?
Upvotes: 4
Views: 5085
Reputation: 101
In your case you will find that there is Tcl8.X folder in python directory, it is at a place which is not mentioned in [list of directories], you mentioned in your question. Just pick any of the paths from those directory listings (preferably /lib ).
That will allow python to find Tcl library files and it will work.
Note: DO NOT MOVE FILES, JUST COPY THEM.
Upvotes: 0
Reputation: 26752
As RedPhantom mentioned, PyInstaller has a known issue with Tkinter applications on Windows 7 and Windows XP.
Since this issue has gone unfixed for two years, I've gone ahead and started a bounty on Bountysource. Until the issue is fixed, there are a few workarounds you can try:
As mentioned in a related issue, you can manually copy the missing files from your local Python installation.
%LocalAppData%\Programs\Python
)...\Python36-32\tcl\<missing_folder>
)tcl
folder (...\dist\<app_name>\tcl\<missing_folder>
)--onefile
Running PyInstaller in --onefile
mode seems to avoid this issue.
However, note that running in single file mode will increase startup time.
pip install pyinstaller==3.1.0
According to ugoertz, downgrading to PyInstaller 3.1.0 resolved the issue.
Downgrading to 3.1.0 (and also downgrading setuptools to 19.2 because of the problem described in #1941) fixed the issue for me.
Upvotes: 1
Reputation: 352
This is a known issue with PyInstaller and Tkinter on Windows 7 64-bit machines. There is an issue report in the GitHub repository of PyInstaller.
All the way at the bottom this issue was referenced from another issue, namely this one which says that downgrading to PyInstaller 3.1.0 helps other people solve the issue.
pip install pyinstaller==3.1.0
I myself have been able to confirm this using a Virtual Machine.
Upvotes: 1