我在项目中使用__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?
答案 0 :(得分:4)
您有3个选项:
from .. import database.data
)。我不推荐那个。sys.path
的路径。addsitedir()
和.pth
个文件。 Here is how. 答案 1 :(得分:2)
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中实现,它的 显式相对进口的风格是 积极劝阻;绝对进口 更便携,通常更多 可读的。
鼓励像上面给出的绝对进口。