有没有办法使用带有"imp"的绝对/相对路径在同一目录中导入具有依赖项的模块?
以下是目录结构:
.
??? importFrom
? ??? dependant.py
? ??? dependence.py
??? test.py
Run Code Online (Sandbox Code Playgroud)
文件test.py使用以下方法导入dependant.py:
modname=imp.load_source("testImp","importFrom/dependant.py")
Run Code Online (Sandbox Code Playgroud)
反过来导入依赖.py:
import dependence
Run Code Online (Sandbox Code Playgroud)
调用test.py给出
Traceback (most recent call last):
File "test.py", line 3, in <module>
modname=imp.load_source("testImp","importFrom/dependant.py")
File "importFrom/dependant.py", line 1, in <module>
import dependence
ImportError: No module named dependence
Run Code Online (Sandbox Code Playgroud)
使load_source将加载模块的路径添加到加载器以使其自动找到其相对依赖关系可能是值得的.现在,我发现的唯一选择是添加到系统路径,放入test.py
编辑:我找到了一个更好的方法来进行相对导入路径,添加文件来获取调用者的绝对路径(独立于当前工作目录)
sys.path.append(os.path.join(os.path.dirname(__file__), 'importFrom'))
import dependant
Run Code Online (Sandbox Code Playgroud)