我在這裏有一個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