从任何文件系统路径导入Python模块。
项目描述
pathimp
从任何文件系统路径导入Python模块。
安装
pip3 install pathimp
使用
import pathimp
pathimp.import_module(
name='my_module', # Name of the module directory or file.
path='../path/to/parent/dir', # Path or list of paths to search.
notfound='error') # Raise 'error' or 'ignore' when not found.
import my_module
背景
当使用import
时,Python会尝试在sys.path
中查找模块。可以添加额外的搜索目录到sys.path
或通过PYTHONPATH
环境变量指定。这种解决方案在许多情况下都很好用。然而,将目录添加到sys.path
会使所有添加目录中的模块都可用,这可能导致意外导入不想要的包。`pathimp`包允许从文件系统路径导入包而不污染Python导入路径。
详情
调用pathimp.import_module()
后,模块将在sys.modules
中可用,并且可以通过后续代码正常导入。此函数还返回模块,允许直接使用而无需进一步导入。
import pathimp
my_module = pathimp.import_module('my_module', '../path/to/parent/dir')
如果模块在提供的路径下找不到作为目录或文件,将引发ModuleNotFoundError
。可以通过传递`notfound='ignore'`参数禁用异常。
pathimp.import_module('my_module', '../path/to/parent/dir', notfound='ignore')
可以通过查看返回值来确定导入是否成功,返回值是模块实例或如果未找到模块则为`False`。