__init__.py用于Python中的目录

时间:2011-04-18 11:56:49

标签: python

我在项目中使用__init__.py,结构如下:

project\
    project.py
    cfg.py
    __init__.py

    database\
       data.py
       __init__.py

    test\
       test_project.py
       __init__.py

当我需要使用

查看project.py中的database \ modules时,一切正常
from database.data import *

但是如果我需要在test_project.py中包含一些测试代码,那么如何“看到”数据库\ modules?

3 个答案:

答案 0 :(得分:4)

您有3个选项:

  • 使用相对导入(from .. import database.data)。我不推荐那个。
  • 在您的代码中附加sys.path的路径。
  • 使用addsitedir().pth个文件。 Here is how.

答案 1 :(得分:2)

Relative imports

from .. import database.data

答案 2 :(得分:2)

如果您从包含project\的目录运行脚本,则可以在from project.database.data import *中执行test_project.py

这通常是一个好主意,因为relative imports are officially discouraged

  

包内的相对导入   进口非常气馁。总是   使用所有的绝对包路径   进口。即使是现在,PEP 328 [7]也是如此   完全在Python 2.5中实现,它的   显式相对进口的风格是   积极劝阻;绝对进口   更便携,通常更多   可读的。

鼓励像上面给出的绝对进口。