我在这里有一个python模块/root/python/foo.py
。我有一堆其他模块的位置,看起来像这样Python - 导入模块目录给出完整路径
lib/
|
├─ module1/
| ├─ __init__.py
| └─ bar.py
|
└─ module2/
├─ __init__.py
└─ bar.py
我想从foo.py
进口/root/lib/module1
和/root/lib/module2
文件夹/root/lib/
英寸我想不是必须把/root/lib/
加到python系统路径中。 This stack overflow answer告诉您如何使用imp.load_source
,importlib.machinery.SourceFileLoader
或importlib.util
类从文件(取决于python版本)加载模块。我认为这些只在模块是单个文件时才起作用。如果我尝试这样的事情在Python 3.4
from importlib.machinery import SourceFileLoader
problem_module = SourceFileLoader('test_mod', '/root/lib/module1').load_module()
我得到一个IsADirectoryError
我的问题是,是否有类似的方式加载模块(因为它的完整路径),如果它是一个目录,不将整个lib/
文件夹添加到系统路径?
在模块1之后加''' –
您需要使用'sys.path'来可靠地导入模块。看到[这个问题](http://stackoverflow.com/questions/9066777/howto-import-modules-with-dependencies-in-the-same-absolute-relative-path-with-i)。 – BrenBarn
“我想不必在/ python系统路径中添加/ root/lib /。” - 为什么不?它是迄今为止最简单的方法。 – Kevin