一尘不染

如何在给定完整路径的情况下导入模块?

python

给定完整路径,如何加载 Python 模块?

请注意,该文件可以位于文件系统中的任何位置,因为它是一个配置选项。


阅读 131

收藏
2022-02-23

共1个答案

一尘不染

对于 Python 3.5+ 使用:

import importlib.util
spec = importlib.util.spec_from_file_location("module.name", "/path/to/file.py")
foo = importlib.util.module_from_spec(spec)
spec.loader.exec_module(foo)
foo.MyClass()

对于 Python 3.3 和 3.4,请使用:

from importlib.machinery import SourceFileLoader

foo = SourceFileLoader("module.name", "/path/to/file.py").load_module()
foo.MyClass()

(尽管这在 Python 3.4 中已被弃用。)

对于 Python 2 使用:

import imp

foo = imp.load_source('module.name', '/path/to/file.py')
foo.MyClass()

对于已编译的 Python 文件和 DLL,有等效的便利函数。

2022-02-23