慕尼黑5688855
2022-05-24 16:17:44
所以我必須創(chuàng)建一個(gè)運(yùn)行文件夾,即一個(gè)包含一堆我需要運(yùn)行的python文件的文件夾。我可以輕松創(chuàng)建此文件夾,并且所有文件都在那里。但是,當(dāng)我嘗試使用 運(yùn)行文件時(shí)importlib,python 不會找到它。我想確保運(yùn)行的代碼實(shí)際上是運(yùn)行文件夾代碼,因此我將目錄更改為運(yùn)行文件夾的位置。abs_path = os.path.abspath("{}".format(run_location))os.chdir(abs_path)files = [f for f in os.listdir('.') if os.path.isfile(f)]print(files)try: driver_module = importlib.import_module("main_driver.py") driver_module.main(config, logger)except Exception as e: logger.error("error", str(e)) finish_fail(config, logger)finish_success(config, logger)在上面的例子中,我只想運(yùn)行main_driver.py. 上面的輸出是:['PrepareDataframe.py', 'categorical_encoding.py', 'extra_files.zip', 'build_features.py', 'spot_extractor.py', 'dev.ini', 'featuriser.py', 'main_driver.py', 'time_features_extract.py']顯然,main_driver.py在當(dāng)前工作目錄中,但我收到此錯誤。No module named 'main_driver'追溯:Traceback (most recent call last): File "./utils/submit.py", line 292, in <module> driver_module = importlib.import_module("main_driver") File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlockedModuleNotFoundError: No module named 'main_driver'
1 回答

POPMUISE
TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
這似乎是一個(gè)PYTHONPATH
問題。
當(dāng)您運(yùn)行 Python 交互式解釋器時(shí),其中的第一項(xiàng)sys.path
是一個(gè)空字符串,這實(shí)際上表示“當(dāng)前目錄”。所以任何時(shí)候你嘗試導(dǎo)入一個(gè)模塊,它都會首先在當(dāng)前目錄中查找。
但是,如果您運(yùn)行python myscript.py
,情況并非如此——其中的第一項(xiàng)sys.path
是您在運(yùn)行腳本時(shí)所在的實(shí)際目錄。因此,如果您使用os.chdir()
更改當(dāng)前目錄,則新的當(dāng)前目錄不在 中sys.path
,因此import_module('foo')
會因?yàn)檎也坏蕉 ?/p>
如果您想模仿始終在當(dāng)前目錄中查找模塊的交互式 python 行為,請?zhí)砑?code>sys.path.insert(0, '')到您的腳本中。
添加回答
舉報(bào)
0/150
提交
取消