4

py2exeを使用して基本的なtkinterGUIプログラムを.exeに変換しようとしています。ただし、次の変換スクリプトを使用してエラーが発生しました。

# C:\Python26\test_hello_con.py py2exe

from distutils.core import setup
import py2exe

setup(windows=[r'C:\Python26\py2exe_test_tk.py'])

C:\ Python26\py2exe_test_tk.pyは次のコードです

import Tkinter as tk

root = tk.Tk()
root.title("Test")


label1 = tk.Label(root,text="Hello!",font=('arial', 10, 'bold'), bg='lightblue')
label1.pack(ipadx=100, ipady=100)


root.mainloop()

これは、新しく作成した.exeを実行しようとしたときに発生するエラーです。

Traceback (most recent call last):
  File "py2exe_test_tk.py", line 4, in <module>
  File "Tkinter.pyc", line 1643, in __init__
_tkinter.TclError: Can't find a usable init.tcl in the following directories: 
    {C:/Users/My_Name/lib/tcl8.5} {C:/Users/My_Name/lib/tcl8.5} C:/Users/lib/tcl8.5 {C:/Users/My_Name/library} C:/Users/library C:/Users/tcl8.5.8/library C:/tcl8.5.8/library



This probably means that Tcl wasn't installed properly.

変換スクリプトで問題が発生していると確信しています。何を省略しましたか?または、誰かがtkinter GUIプログラムの変換スクリプトがどのように見えるかの例を持っていますか?また、出力.exeファイルをデスクトップに転送することはできますか?

編集:

エラーレポートには、 {C:/ Users / My_name / lib/tcl8.5}からinit.tclが欠落していると記載されていました。そこで、そのディレクトリを作成し、init.tclのコピーをそこに置きました。.exeを実行しようとすると、MSVCR90.dllがコンピューターにないため、プログラムを実行するために必要であると表示されます。

また、これはWindows7のpython2.6.5です。

4

4 に答える 4

2

元の問題については、正確に何が問題なのかはわかりません が、通常は試行錯誤して不足しているファイルやディレクトリを推測するのに役立ちます。不足しているものがわかっている場合は、それらをpackages(python モジュールの場合) またはdata_files(他のファイルの場合) に追加します。

2 番目の問題は、一部の c モジュール (および python 自体) が MS Visual Studio でビルドされているため、MS Visual C++ 9.0 (2008) ランタイムに依存しているためです。これは、次のいずれかで解決できます。

  • Visual Studio のコピーを所有しているため (Express Edition はカウントされません)、MSVCR の依存関係を再配布することが許可されます (依存部分のユーザーによる再エンジニアリングなどを禁止するという条件の下で)。

  • Microsoft でMS Visual C++ 2008 再頒布可能パッケージをダウンロードするようユーザーに案内します。

于 2010-11-11T21:45:32.170 に答える
1

virutalenv サイトで次のようなバグを見つけました https://github.com/pypa/virtualenv/issues/93

ディレクトリ「C:\Environments\VirtualEnv\Scripts\activate.bat」内のウィンドウの場合、PythonバージョンのTCLおよびTKへの正しいパスに設定されているものを追加するだけです

set "TCL_LIBRARY=C:\Python27\tcl\tcl8.5"
set "TK_LIBRARY=C:\Python27\tcl\tk8.5"

コマンドまたはシェルを再起動します

このエラーが発生したとき、それは私にとって非常にうまくいきました。

于 2015-07-22T10:14:55.377 に答える
0

MSVCR90.dllに関しては、この投稿を参照してください。これはパッケージ化されており、ユーザーが個別にインストールするよりも好ましくない可能性があります。

また、その投稿の特定の問題は私のものであり、根本的な原因をまだ理解していません。そうは言っても、完全なPythonのアンインストールとクリーンな再構築はうまくいきました...おそらくそれもあなたの問題です。py2exe で RuntimeError: Too Early to create image が返される

于 2016-12-09T05:26:08.773 に答える
0

py2exe はモジュールでは動作しません。明らかにモジュールで動作する c_freeze という名前を聞いたことがあります。試してみてください。http://cx-freeze.sourceforge.net/

于 2013-09-13T17:28:06.653 に答える