Mã python bên dưới cung cấp chức năng bổ sung, bao gồm chức năng hoạt động liền mạch với py2exe
thực thi.
Tôi sử dụng mã tương tự như thế này để tìm đường dẫn liên quan đến tập lệnh đang chạy, còn gọi là __main__
. như một lợi ích bổ sung, nó hoạt động đa nền tảng bao gồm cả Windows.
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')
Hy vọng rằng các mã ví dụ trên có thể cung cấp cái nhìn sâu sắc hơn về cách để xác định đường dẫn đến kịch bản chạy ...
Gọn gàng! Quan trọng để nhận ra rằng người ta cần nhập __main__ - Tôi đã đoán ngẫu nhiên và thực sự đã thử dòng thứ hai, nhưng nó không thành công - bây giờ tôi biết tại sao. –
'__main__' không phải lúc nào cũng có thuộc tính' __file__'. – jfs
Vâng, sẽ rất tuyệt nếu câu trả lời có thể được cập nhật để đề cập đến điều đó. –