__Python中目录的init__;.py用法

__Python中目录的init__;.py用法,python,Python,我在我的项目中使用\uuuu init\uuuu.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

我在我的项目中使用
\uuuu init\uuuu.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中包含一些测试代码,如何“查看”数据库\模块?

您有3种选择:

  • 使用相对导入(
    from..import database.data
    )。我不推荐那个
  • 将路径附加到代码中的
    sys.path
  • 使用
    addsitedir()
    .pth
    文件
如果从包含
project\
的目录运行脚本,只需在
test\u project.py
中从project.database.data import*执行

这通常是个好主意,因为:

包装内的相对进口 强烈反对进口。总是 将绝对包路径用于所有 进口。即使现在政治公众人物328[7]已经 在Python2.5中完全实现,其 显式相对导入的样式是 积极劝阻;绝对进口 更便于携带,通常更方便 可读的


鼓励上面给出的绝对导入。

官方不鼓励相对导入。我有一个“SyntaxError:invalid syntax”错误(在Python 2.71中)我没有pb可以从project\运行test\u project.py,但我会从project\test\运行它。您是否也需要在test\u project.py中导入项目
?是的,我也需要,但我会简化我的答案。好的……我选择在sys.path中添加路径
from .. import database.data