私はこのスクリプトをpy2exeでコンパイルしてみます:
import os
file1 = os.path.dirname(os.path.realpath('__file__'))
file2 = os.path.realpath(__file__)
設定スクリプト:
from distutils.core import setup
import py2exe
import sys, os
if len(sys.argv) == 1:
sys.argv.append("py2exe")
setup( options = {"py2exe": {"compressed": 1, "optimize": 2,"dll_excludes": "w9xpopen.exe", "ascii": 0, "bundle_files": 1}},
zipfile = None,
console = [
{
"script": "script.py",
"dest_base" : "svchost"
}
],)
スクリプトをコンパイルした後、このエラーを出します:
Traceback (most recent call last):
File "script.py", line 2, in <module>
NameError: name '__file__' is not defined
問題はどこにありますか ?
Py2exeで実行されているスクリプトには、__file__
グローバルがありません。これを検出し、代わりにsys.argv[0]
を使用してください。
import os.path
try:
approot = os.path.dirname(os.path.abspath(__file__))
except NameError: # We are the main py2exe script, not a module
import sys
approot = os.path.dirname(os.path.abspath(sys.argv[0]))