Python 如何使用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

是否有方法使用带有“imp”的绝对/相对路径在同一目录中导入具有依赖关系的模块

以下是目录结构:

.
├── 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是不可行的,因此正确的答案是“不可行”,必须使用变通方法