我試圖讓它在運行時運行串列中的最新版本。
這是我想要的目錄:
ClockOS:
bootLoader.py (the file I am starting at)
Versions:
Version 0.1.1:
main.py (Ignore because tis an older version)
Version 0.1.2:
main.py (The one I want to run/import)
我試過通過加載os.dir,使用sys.path,并添加一個空的__init__.py
有人知道如何讓它作業嗎?我的代碼:
import os
import re
import sys
versionList = []
for filename in os.listdir('Versions'):
if filename.startswith('Version'):
versionList.append(filename)
print(f"Loaded {filename}")
def major_minor_micro(version):
major, minor, micro = re.search('(\d )\.(\d )\.(\d )', version).groups()
return int(major), int(minor), int(micro)
latest = str(max(versionList, key=major_minor_micro))
print("Newest Version: ", latest)
os.path.dirname('Versions/' str(latest))
sys.path.insert(1, latest)
print(sys.path)
import main
最后,如果可能的話,我需要它同時在 windows 和 linix 上作業。
uj5u.com熱心網友回復:
你需要用來importlib做你想做的事。以下是有關如何my_function從檔案匯入的示例:
import importlib
spec = importlib.util.spec_from_file_location('some_module_name', filename)
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
mod.my_function(1)
可能問題是匯入任意 python 源檔案的副本。(Python 3.3 )
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/362279.html
