目录中的python导入

时间:2013-01-30 14:28:18

标签: python

我有一个python项目,我将它分为两​​部分,一个库部分和一个 二元部分。

出于组织原因,我希望有一个这样的层次结构:

project/
    lib/
        __init__.py
        module1.py
        module2.py
    bin/
        binary1.py # contains: import module1
        binary2.py # contains: import module2
    doc/
    ...

问题是,当然,二进制{1,2} .py中的简单导入不起作用,at 至少在编码阶段(安装前)。

有什么建议吗?在编码时如何测试代码?

1 个答案:

答案 0 :(得分:0)

我到处都使用绝对导入。

project/
    __init__.py
    lib/
        __init__.py
        module1.py
        module2.py
    bin/
        __init__.py
        binary1.py # contains: import module1
        binary2.py # contains: import module2
    doc/
    ...

将PYTHONPATH设置为project上方的目录,您可以从module1导入binary1.py,如下所示:

from project.lib import module1

__init__.py文件可以使导入更简单,比方说你在每个文件中都有一个类。通常你必须像这样导入类(inclduding filename):

from project.lib.module1 import Module1

但是,如果您修改lib/__init__.py以包含此行:

from project.lib.module1 import Module1

您可以使用lib的命名空间直接从Module1导入lib

from project.lib import Module1