अजगर कोड के नीचे शामिल है कि वह py2exe
निष्पादनयोग्य के साथ सहजता से काम करता है, अतिरिक्त सुविधा प्रदान करता है।
मैं चल रहे स्क्रिप्ट, उर्फ __main__
से संबंधित पथ खोजने के लिए इस तरह के समान कोड का उपयोग करता हूं। एक अतिरिक्त लाभ के रूप में, यह विंडोज सहित क्रॉस-प्लेटफॉर्म का काम करता है।
import imp
import os
import sys
def main_is_frozen():
return (hasattr(sys, "frozen") or # new py2exe
hasattr(sys, "importers") # old py2exe
or imp.is_frozen("__main__")) # tools/freeze
def get_main_dir():
if main_is_frozen():
# print 'Running from path', os.path.dirname(sys.executable)
return os.path.dirname(sys.executable)
return os.path.dirname(sys.argv[0])
# find path to where we are running
path_to_script=get_main_dir()
# OPTIONAL:
# add the sibling 'lib' dir to our module search path
lib_path = os.path.join(get_main_dir(), os.path.pardir, 'lib')
sys.path.insert(0, lib_path)
# OPTIONAL:
# use info to find relative data files in 'data' subdir
datafile1 = os.path.join(get_main_dir(), 'data', 'file1')
उम्मीद है कि ऊपर के उदाहरण कोड कैसे चालू स्क्रिप्ट के पथ का निर्धारण करने के बारे में अतिरिक्त जानकारी प्रदान कर सकते हैं ...
साफ! यह समझने के लिए महत्वपूर्ण है कि किसी को __main__ आयात करने की आवश्यकता है - मैंने एक यादृच्छिक अनुमान लगाया और वास्तव में दूसरी पंक्ति की कोशिश की, लेकिन यह असफल रहा - अब मुझे पता है क्यों। –
'__main__' में हमेशा' __file__' विशेषता नहीं होती है। – jfs
हाँ, अच्छा होगा अगर उत्तर का उल्लेख करने के लिए अद्यतन किया जा सके। –