从邻居子包导入python子包

时间:2016-02-02 14:54:42

标签: python import module package packages

考虑以下层次结构

MusicEditor (package)
        Converters (subpackage)
            ...
        Transformations (subpackage)
            ...
        Utility (subpackage)
            ...

将实用程序子包中的文件/模块导入转换器子包中的文件的正确方法是什么?

e.g。将Utility / string.py导入文件Converters / wav.py

我该怎么做?

编辑回应Ismael Infante

以下是否正确?

假设MusicEditor位于/ usr / something / MusicEditor中。然后我会编辑python路径如下?

PYTHONPATH = PYTHONPATH + /usr/something/

然后我将init文件添加到每个目录,如下所示:

MusicEditor (package)
        __init__.py
        Converters (subpackage)
            __init__.py
            ...
        Transformations (subpackage)
            __init__.py
            ...
        Utility (subpackage)
            __init__.py
            ...

然后将实用程序中的内容包含在转换器中的文件中,我只想:

(MusicEditor/Converters/wav.py)

import MusicEditor.Utility.string

这是对的吗?但我也可以使用以下相对路径

(MusicEditor/Converters/wav.py)

import ..Utility.string

1 个答案:

答案 0 :(得分:1)

您必须在每个目录中放置一个__init__.py空文件。通过这种方式,您的目录将成为包。

之后,你必须设置PYTHONPATH变量。此变量必须指向MusicEditor的父目录。通过这个变量,Python解释器可以到达你的包。