考虑以下层次

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


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

例如将Utility / string.py导入到Converters / wav.py文件中

我将如何去做呢?



编辑以回应Ismael Infante

以下内容正确吗?

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

PYTHONPATH = PYTHONPATH + /usr/something/


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

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


是?

最佳答案

您必须在每个目录中放入一个__init__.py空文件。这样,您的目录将成为软件包。

之后,您必须设置PYTHONPATH变量。此变量必须指向MusicEditor的父目录。正是通过此变量,Python解释器才能访问您的包。

10-06 10:38