0

Python 2.7で記述されたプログラムからexeファイルを作成しようとしています(GTK +レイアウトを使用)。私はこのガイドを参照しました:http ://www.py2exe.org/index.cgi/Py2exeAndPyGTKそしてそれに応じてファイルを設定しようとしました。.exeファイルを正常に作成しましたが、実行しようとすると、次のエラーが発生します。

Traceback (most recent call last):
  File "cipherka.py", line 183, in <module>
  File "cipherka.py", line 18, in __init__
GError: Nelze otevřít soubor "C:\Repa\cipherka\dist\library.zip\gui.xml": No such file or directory

library.zipアーカイブにgui.xmlファイルが見つかりませんが、メインの.exe(cipherka.exe)ファイルと同じレベルで利用できます。自分で.zipファイルにコピーしても、問題は解決しません。

これが私のsetup.pyファイルです:

from distutils.core import setup
import py2exe
import glob

setup(
    name="cipherka",
    windows = [
                  {
                      'script': 'cipherka.py',
                  }
              ],

    options = {
                  'py2exe': {
                      'packages':'encodings',
                      'includes': 'cairo, pango, pangocairo, atk, gobject, gio',
                  }
              },
    data_files=['gui.xml',
                'README',
                ("modules", glob.glob("modules/*.*")),
                ("media", glob.glob("media/*.png"))
    ]
)

どんな助けでも大歓迎です!そして、必要に応じて必要な情報を提供することができます。どうも

アップデート:

了解しました。変更を実装しました。しかし、それは奇妙なことをします。私が使用するとき:

path = os.path.dirname(__file__).replace('\\library.zip','')

.pyファイルから実行すると機能しますが、次のエラーでコンパイルすると失敗します。

Traceback (most recent call last):
  File "cipherka.py", line 217, in <module>
  File "cipherka.py", line 18, in __init__
NameError: global name '__file__' is not defined

使うとき

path = os.path.dirname('gui.xml').replace('\\library.zip','')

代わりに-プログラムはPythonからの実行を停止し、コンパイルされたバージョンは私に次のようになります:

C:\Repa\cipherka\dist\cipherka.exe:188: GtkWarning: gtk_tree_path_append_index: assertion `index >= 0' failed
C:\Repa\cipherka\dist\cipherka.exe:188: GtkWarning: gtk_tree_model_get_iter: assertion `path->depth > 0' failed
Traceback (most recent call last):
  File "cipherka.py", line 217, in <module>
  File "cipherka.py", line 55, in __init__
  File "cipherka.py", line 188, in changed_cb
IndexError: could not find tree path

何か案は?

4

2 に答える 2

0

"gui.xml"あなたのコードが想定しているように"C:\Repa\cipherka\dist\"ではなく、にあります。"C:\Repa\cipherka\dist\library.zip"

これは、プログラムがコンパイルされているかどうかに関係なく機能するはずです。

path = os.path.dirname(__file__).replace('\\library.zip','')
xml_file = open(os.path.join(path, 'gui.xml'))
于 2012-04-16T16:27:30.350 に答える
-1

報告されたエラーは、で実行されているスクリプトにグローバルpy2exeがないことが原因です。__file__これを検出し、sys.argv[0]代わりに.pyファイルで使用してください。

于 2015-04-09T06:46:42.933 に答える