Programer Beginner
Programer Beginner

Reputation: 1419

PyInstaller fails on Windows 7: "Can't find a usable init.tcl"

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

Answers (3)

Curious KP
Curious KP

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

Stevoisiak
Stevoisiak

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:

Workaround 1 - Manually copy missing files

As mentioned in a related issue, you can manually copy the missing files from your local Python installation.

  1. Find your local Python installation. (%LocalAppData%\Programs\Python)
  2. Make a copy of the missing folder (...\Python36-32\tcl\<missing_folder>)
  3. Move the copy to your application's tcl folder (...\dist\<app_name>\tcl\<missing_folder>)

Workaround 2 - Run with --onefile

Running PyInstaller in --onefile mode seems to avoid this issue.

However, note that running in single file mode will increase startup time.

Workaround 3 - Downgrade to PyInstaller 3.1.0

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

RedFantom
RedFantom

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

Related Questions