如果我有这样的src目录设置:基本Python导入质疑
main.py
pkg1:
__init__.py
util.py
pkg2:
__init__.py
test.py
你能告诉我从main.py
和test.py
导入pkg1.util
的最佳方式?
谢谢! (如果我需要另一个__init__.py
文件的根目录下,让我知道?)
如果我有这样的src目录设置:基本Python导入质疑
main.py
pkg1:
__init__.py
util.py
pkg2:
__init__.py
test.py
你能告诉我从main.py
和test.py
导入pkg1.util
的最佳方式?
谢谢! (如果我需要另一个__init__.py
文件的根目录下,让我知道?)
既然你提到这是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
这意味着,当然,你总是从目录中运行的Python中main.py
是,或者那个目录在PYTHONPATH
或由于某种原因(如成为主要的Python站点包目录)在sys.path
结束。
从main.py:
import pkg1.util
从test.py:
from ..pkg1 import util
如果在`PYPATH`中出于某种原因存在一个不同的`pkg1`,那么我是否仍然会用这两个选项导入* this *`pkg1`? – 2011-01-23 00:19:42