如何导入文件名中带有句点的Python 3模块?

问题描述

理想情况下,使用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()

“”“