问题描述
理想情况下,使用importlib导入包含句点的脚本(例如program_1.4.py)的正确方法是什么?
(现在不建议使用imp模块,此答案不再适用:How to reference python package when filename contains a period。)
解决方法
仔细研究了CPython并回到其他解决方案(尤其是Import arbitrary python source file. (Python 3.3+))之后,我意识到我需要将完整路径传递给模块。这是跨平台,与呼叫位置无关的解决方案:
“”“
import os,sys # For running from Notepad++ shortcut,etc
import importlib.machinery
program_1_4 = importlib.machinery.SourceFileLoader('program_1.4',os.path.join(sys.path[0],'program_1.4.py')).load_module()
print(program_1_4)
program_1_4.main()
“”“