web-dev-qa-db-ja.com

python 3.5のtkinterアプリでのPyinstallerの問題

Pyinstaller(およびTkウィンドウ処理)を使い始めて、tkinter Windowsアプリ(python 3.5)の下)を正常に実行するのに問題があります。私は愚かなことをしているかもしれませんが、私はすべてを試しました知っているし、私は本当にこれを実行する必要があるので、どんな助けも大歓迎です。ただ注意してください、私のコードはすべて通常のpython 3.5.1&3.5.3。最新バージョンを持っているPyInstallerがインストールされており(3.2.1)、正常に実行されているようです。

次のシンプルなウィンドウの「HelloWorld!」に切り替えました。これを機能させることができるかどうかを確認するアプリ、

from tkinter import *
root = Tk()
root.title("Test Window")

#Setup window widgets and place on window
l1 = Label(root,text='Hello World!',font=("Verdana",18))
l2 = Label(root,text='Hello World!',font=("Times New Roman",9))
b1 = Button(root, text='Button 1', font=("Verdana",12), state=DISABLED)
b1.pack()
b1.place(x=220, y=180)

l1.pack()
l1.place(x=170, y=10)
l2.place(x=200, y=60)

root.mainloop()

しかし、それは私の元のアプリケーションと同じ問題を抱えているようです。

たぶんそれは私がPyInstallerに不慣れであるという理由だけですが、特定の答えを見つけるのが本当に簡単なドキュメントを見つけていません。しかし、もう少し詳しく見てみると、コマンドラインに-dオプションを追加して、アプリを実行しようとしたときのデバッグ出力を確認することにしました。したがって、使用している完全なコマンドラインは次のとおりです。> pyinstaller -F -w -dc:\ PythonApps\Hello.py。それは私にこのエラーメッセージで終わる多くの情報を与えました:

スクリプトpyi_rth_tkinterの実行に失敗しました。

これは、元のプログラムで見たのと同じエラーでした。システム(実際にはファイルの2つのバージョン)で「pyi_rth_tkinter.py」を見つけることができましたが、PyInstallerで実行に問題がある理由がわかりません。しかし、そのファイルはTclおよびTkデータディレクトリのパスの問題に関するエラーメッセージを吐き出すので、ファイルを見つけて実行したとしても、とにかく失敗したと推測します。

OK、PyInstallerの実行中の出力を詳しく見ると、問題の原因になっているように見える行がいくつかあることがわかります。

3541 INFO: Loading module hook 'hook-_tkinter.py'
ImportError: cannot import name 'Tcl'
3659 ERROR: Tcl/Tk improperly installed on this system.

「hook-_tkinter.py」フックファイルを調べました(そしてPyInstallerのドキュメントを読みました)が、明らかに間違いは見られませんでした。しかし、私はフックファイルのすべての詳細とそれらが何を含む必要があるかを完全には認識していません(誰かがこれを手伝うことができますか?)。問題が何であるかは正確にはわかりませんが、PyInstallerでtkinterへのリンクに問題があり、アプリが実行されない原因になっているようです。 PyInstaller3.2.1を簡単に実行できる人はいますかPYTHON 3.5 WINDOWS APP?もしそうなら、共有してください!私はたくさんの検索と読み取りを行いましたが、発見できませんでした問題はまだ何ですか。誰かが手がかりを持っているなら、助けてください。どんなガイダンスも大歓迎です!


少し追加情報。 PyInstallerがTcl/Tkが正しくインストールされていないと言っている理由がわかりません。 Python 3.5.3をインストールしたところ、tkinterが自動的にインストールされました。シェルで'tkinter._text()'を実行しましたが、正常に動作しているようです。すべての用途tkinterのは、Pythonの通常の使用では3.5のすべてのバージョンで正常に動作するようです。私が抱えているtkinterの問題はPyInstallerだけです。'tkinter.Tcl()でインストールされたTcl/Tkの正確なバージョンを確認しました。 eval( 'info patchlevel') 'そしてそれは報告しました' 8.6.4 '。問題になるかもしれないTcl/Tkの他のインストールの問題を知っている人はいますか?私は何もしませんでしたtkinterをインストールするのに特別なことですが、'python 3.5.3'の新規インストールを行った後、'pip install pyinstaller'を介してpyinstallerの通常のインストールを実行しました。他に何かありましたか私はやるべきだったのですか?どんな助けでも大歓迎です!!!

6
Sealyons

私はtkinterとpython 3.5を調べた後、同様の問題を抱えていました https://pythonhosted.org/PyInstaller/hooks.html#understanding-pyinstaller-hooks

--hidden-importtkinterのオプションを追加します

pyinstaller --onefile --hidden-import tkinter hello.py

6
Tim Truty

私は同じ問題に直面し、正しい答えを探して6時間立ち往生しました。次の手順を実行した後、これで機能します。

  1. すべてのPythonインタープリターをアンインストールします。
  2. Python-2.7.16.AMD64バージョン(64ビットOSの場合)またはPython-2.7.16バージョン(32ビットOSの場合)をダウンロードします。
  3. このPCに移動->システムの詳細設定->環境変数
  4. [パス]を選択し、[編集]をクリックします
  5. 次のパスを追加します。 C:\ Python27\Scripts\b。 C:\ Python27 \
  6. Cmdを開く
  7. 「pipinstallpyinstaller」と入力します
  8. Pyinstallerをインストールした後、プログラムがあるフォルダーに移動します(つまり、tkinter GUIで)

  9. Cmdに次のように入力します。

    pyinstaller program.py

それはあなたの問題を解決します。

私が見つけた解決策は、すべてのPythonインタープリターをアンインストールし、2.7バージョンをインストールすることでした。

P.S. stackoverflowの新機能

0
Jibin Raj