导入模块不在相对于当前文件

时间:2018-01-23 18:27:33

标签: python-2.7 python-import

我正在开发一个系统,我无法通过添加新模块添加到sys.path的路径来添加新模块。相反,我想将模块放在与使用它的文件相同的文件夹中,然后使用imp或importlib(或类似的)在运行时导入模块。

我尝试过使用imp和importlib,但无法使用它。时间将告诉我在使用两个库中的任何一个时是否只是误解了指定的方式和索引。

我的项目的文件夹结构定义如下:

root-folder-in-sys-path/
- file1.py
- file2.py
- file3.py
- my-module/
--- __init__.py
--- helper1.py
--- helper2.py

正如我的示例所示,根文件夹是sys.path的一部分。文件(file1.py等)是系统的一部分,是我需要访问模块的地方。只添加包含特定类型类的文件,因此不可能只在根目录中添加模块文件来加载它们,因为它们将被忽略。最好的情况是如果helper-n.py的helper1.py可用 - 否则如果只加载一个就可以。

感谢。

1 个答案:

答案 0 :(得分:0)

我能够提出一个加载任何助手的解决方案。我想这可以很容易地用这种方式制作成包含更多模块的包。

例如,要访问helper1.py中的file1.py,这将有效:

import os.path, imp
path = os.path.abspath(os.path.join(os.path.dirname(__file__), "my-module/helper1.py"))
im = imp.load_source("helper1", path)

如果您找到更好的解决方案,请告诉我们!