如果我有这样的src目录设置:
main.py
pkg1:
__init__.py
util.py
pkg2:
__init__.py
test.py
您能告诉我从pkg1.util
和main.py
导出test.py
的最佳方式吗?
谢谢! (如果我需要在根目录中有另一个__init__.py
文件,请告诉我?)
答案 0 :(得分:5)
由于您提到这是Python 3,因此您不必将以下内容添加到.py
文件中。我仍然会,因为如果一些困在Python 2上的可怜的人需要使用你的代码,它会有助于向后移植:
from __future__ import absolute_import
鉴于您使用的是Python 3,或者您正在使用Python 2并且已包含上述行,这是您的答案:
来自main.py
:
import pkg1.util as util
来自test.py
的您将使用以下两种方式中的一种,具体取决于您是否将pkg1
和pkg2
视为始终以相同方式相互关联的内容,或者他们是否总是在顶层半独立地部署。如果是第一个,你会这样做:
from ..pkg1 import util
如果这是第二个选项,那么:
import pkg1.util as util
当然,这意味着您始终从main.py
所在的目录运行Python,或者该目录位于PYTHONPATH
或最终位于sys.path
由于某种原因(例如,作为主要的Python site-packages目录)。
答案 1 :(得分:1)
来自main.py:
import pkg1.util
来自test.py:
from ..pkg1 import util