Python 如何使用imp在相同的绝对/相对路径中导入具有依赖关系的模块?
是否有方法使用带有“imp”的绝对/相对路径在同一目录中导入具有依赖关系的模块 以下是目录结构:Python 如何使用imp在相同的绝对/相对路径中导入具有依赖关系的模块?,python,import,Python,Import,是否有方法使用带有“imp”的绝对/相对路径在同一目录中导入具有依赖关系的模块 以下是目录结构: . ├── importFrom │ ├── dependant.py │ └── dependence.py └── test.py 文件test.py使用以下方式导入dependent.py: modname=imp.load_source("testImp","importFrom/dependant.py") 进而直接导入dependence.py,包括: import depe
.
├── importFrom
│ ├── dependant.py
│ └── dependence.py
└── test.py
文件test.py使用以下方式导入dependent.py:
modname=imp.load_source("testImp","importFrom/dependant.py")
进而直接导入dependence.py,包括:
import dependence
调用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
您需要将
\uuuu init\uuuuuuu.py
放在importFrom
目录中
In [5]: ls importFrom/
dependance.py dependant.pyc dependence.pyc __init__.pyc
dependant.py dependence.py __init__.py
In [6]: from importFrom import dependant
In [7]: dependant.dependence
Out[7]: <module 'importFrom.dependence' from 'importFrom/dependence.py'>
[5]中的:ls importFrom/
dependance.py dependent.pyc dependence.pyc\uuuu init\uuuuu.pyc
dependent.py dependence.py\uuuu init\uuuuuu.py
在[6]中:从进口到进口依赖项
在[7]中:依赖的
出[7]:
我没有在
test
中导入dependent
,而是使用Python解释器来显示输出。在<代码>依赖项.p> ,<代码>依赖性< /代码>被导入。 IMO,这是不可行的,用<代码>加载源> <代码> >它不做必要的事情,以便在您的“依赖者.pY”文件中导入其父目录。
In [5]: ls importFrom/
dependance.py dependant.pyc dependence.pyc __init__.pyc
dependant.py dependence.py __init__.py
In [6]: from importFrom import dependant
In [7]: dependant.dependence
Out[7]: <module 'importFrom.dependence' from 'importFrom/dependence.py'>
您应该执行建议的操作(目录中的
\uuuu init\uuuuuuuuuuuuuu.py
,模块中的绝对导入),或者使用允许此类操作的较低级别的find\u module/load\u module函数(请参见find\u module'path'参数)这允许避免添加到标准导入的路径,它仍然不能与imp.load_source一起工作,而且我认为如果要导入的模块是到一个完全不同的目录中,它也不能工作。在importFrom目录中创建文件init.py吗?我创建了init.py,并在test.py中放置了import importFrom.dependent。它仍然可以工作,因为importFrom目录是持有test.py的目录的直接子目录。无法在标准导入中指定它的绝对路径。使用tup=imp.find_模块(“dependent”、[“/opt/importFrom/”、“other”])imp.load_模块(“dependent”、tup[0]、tup[1]、tup[2])会给出相同的错误“没有名为dependence的模块”。我还认为从python 2.7开始使用load_source是不可行的,因此正确的答案是“不可行”,必须使用变通方法