9

等级制度:

scripts/
    web/
        script1.py
    tests/
        script2.py
common/
    utils.py

我将如何在 script1 和 script2 中导入 utils,并且仍然能够单独运行这些脚本(即,python script1.py)。我会将__init__.py文件放在哪里,这是正确的方法吗?谢谢!

4

1 回答 1

8
package/
    __init__.py
    scripts/
        web/
            __init__.py
            script1.py
        tests/
            __init__.py
            script2.py
    common/
        __init__.py
        utils.py

我在__init__.py你的包中添加了一堆空文件。现在您有 2 个选择,您可以使用绝对导入:

 from package.common import utils

或等效地:

 import package.common.utils as utils

这里的缺点是它package必须以某种方式打开PYTHONPATH。另一种选择是使用相对导入

from ....common import utils

我通常不鼓励这种方法......很难说出事情的来源(是 4 个周期还是 6 个周期?)。

于 2013-07-18T17:42:40.987 回答