1

シングルトンを含むコンパイル済みアプリの実行に問題があり、.pywコンパイルプロセスは問題なく実行されますが、結果の.exeを実行しようとすると、次のメッセージを含むエラーログが書き込まれます。

Traceback (most recent call last):
  File "main.pyw", line 16, in <module>
  File "tendo\singleton.pyc", line 20, in __init__
AttributeError: 'module' object has no attribute '__file__'

これは私がシングルトンと呼んでいる方法です:

from tendo import singleton
me = singleton.SingleInstance()
4

1 に答える 1

1

テンドのシングルトンモジュールは、メインディレクトリを見つけるために利用します。sys.modules['__main__'].__file__py2exeには存在しないため、このエラーが発生します。

あなたはこの答えでそれを修正することができます。tendo / singleton.pyの20行目には、次のものがあります。

self.lockfile = os.path.normpath(tempfile.gettempdir() + '/' +
  os.path.splitext(os.path.abspath(sys.modules['__main__'].__file__))[0] \
  .replace("/","-").replace(":","").replace("\\","-") + '-%s' % flavor_id +'.lock')

次のようなものに置き換えます。

path_to_script = get_main_dir()  #see linkd answer
self.lockfile = os.path.normpath(tempfile.gettempdir() + '/' +  path_to_script
  .replace("/","-").replace(":","").replace("\\","-") + '-%s' % flavor_id +'.lock')

これを問題として作成者に報告するか、修正を使用してプルリクエストを作成してください。

于 2012-09-18T18:51:38.797 に答える