导入与现有软件包相同的软件包的模块

时间:2019-11-22 10:12:21

标签: python python-import

我具有以下目录结构:

/some/dir
       ┣ mainmodule
       ┃    ┣ __init__.py
       ┃    ┗ module.py
       ┗ submodules
            ┣ __init__.py
            ┗ module
                ┣ __init__.py
                ┣ submodule_1.py
                ┣ ...
                ┗ submodule_n.py

/some/dir/mainmodule/some/dir/submodules都不在pyhton的库路径上。位于目录/some/dir/mainmodule中,我想导入目录module.submodule_1中的所有模块(module.submodule_n,...,/some/dir/submodules)。

我尝试了以下方法。但我总是得到ImportError: No module named submodule_1

>>> import sys
>>> sys.path.append("/some/dir/submodules")
>>> import module.submodule_1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named submodule_1
>>>

问题似乎是module.py中的/some/dir/mainmodule/some/dir/submodules中的第一个模块包同名。重新命名module.py或软件包可以解决此问题,但是由于这是我正在使用的一些广泛使用的旧代码,因此我不知道是否有未记录的对这些名称的引用。因此,我正在寻找一种无需重命名任何文件即可解决此问题的方法。

1 个答案:

答案 0 :(得分:2)

使用以下行。

sys.path.insert(0, '/some/dir/submodules')