यहाँ py2exe documentation reference है और यहाँ हैं प्रासंगिक आइटम:
sys.executable
exe फ़ाइल का पूरा पथ नाम को तैयार है।
sys.argv
में पहला आइटम निष्पादन योग्य का पूरा पथनाम है, बाकी कमांड लाइन तर्क हैं।
sys.frozen
केवल निष्पादन योग्य में मौजूद है। यह एक कंसोल निष्पादन योग्य के लिए "console_exe" पर सेट है, कंसोल-कम gui निष्पादन योग्य के लिए "windows_exe" और एक inprocess dll सर्वर के लिए "dll" पर सेट है।
__file__
परिभाषित नहीं है (यदि आप sys.argv उपयोग करने के लिए चाहते हो सकता है [0] के बजाय)
यह उन डॉक्स कि क्या "exe फ़ाइल" और "निष्पादन" एक ही बात कर रहे हैं से स्पष्ट नहीं है , और इस प्रकार sys.executable
और sys.argv[0]
एक ही बात है। कोड है कि दोनों script.py और py2exe_executable.exe पिछली बार मैं यह करने के लिए किया था के लिए काम किया को देखते हुए, मैं की तरह कुछ पाते हैं:
if hasattr(sys, 'frozen'):
basis = sys.executable
else:
basis = sys.argv[0]
required_folder = os.path.split(basis)[0]
मुझे लगता है कि काम किया कहते हैं, लेकिन मैं याद नहीं आता कि क्यों मैंने सोचा था कि के रूप में sys.argv[0]
का उपयोग करने के बजाय आवश्यक था।
केवल basis
का उपयोग हाथ में नौकरी के लिए पर्याप्त था (उस निर्देशिका में फ़ाइलों को पढ़ें)। अधिक स्थायी रिकॉर्ड के लिए, os.path.realpath(basis)
जैसे कुछ विभाजित करें।
अद्यतन वास्तव में एक परीक्षण किया; अनुमान लगाता है और आर्मचेयर पोंटिफिकेशन :-)
सारांश: sys.frozen को अनदेखा करें, sys.executable को अनदेखा करें, sys.argv [0] बिना शर्त के साथ जाएं।
साक्ष्य:
=== foo.py ===
# coding: ascii
import sys, os.path
print 'sys has frozen:', hasattr(sys, 'frozen')
print 'using sys.executable:', repr(os.path.dirname(os.path.realpath(sys.executable)))
print 'using sys.argv[0]:', repr(os.path.dirname(os.path.realpath(sys.argv[0] )))
=== सेटअप।py ===
from distutils.core import setup
import py2exe
setup(console=['foo.py'])
=== परिणाम ===
C:\junk\so\py2exe>\python26\python foo.py
sys has frozen: False
using sys.executable: 'C:\\python26'
using sys.argv[0]: 'C:\\junk\\so\\py2exe' # where foo.py lives
C:\junk\so\py2exe>dist\foo
sys has frozen: True
using sys.executable: 'C:\\junk\\so\\py2exe\\dist'
using sys.argv[0]: 'C:\\junk\\so\\py2exe\\dist' # where foo.exe lives
स्रोत
2010-02-18 23:47:33
एक पुराना डुप्लिकेट प्रश्न है लेकिन कम उत्तरों के साथ: [pyInstaller द्वारा उत्पन्न पायथन EXE में अनुप्रयोग पथ निर्धारित करना] (http://stackoverflow.com/questions/404744) – olibre