2011-01-23 96 views
5

如果我有这样的src目录设置:基本Python导入质疑

main.py 
pkg1: 
    __init__.py 
    util.py 
pkg2: 
    __init__.py 
    test.py 

你能告诉我从main.pytest.py导入pkg1.util的最佳方式?

谢谢! (如果我需要另一个__init__.py文件的根目录下,让我知道?)

回答

5

既然你提到这是Python 3,您不必将以下内容添加到.py文件中。我仍然坚持,但因为它有助于向后便携性,如果谁是停留在Python 2里的一些可怜的家伙需要使用您的代码:

from __future__ import absolute_import 

既然你正在使用Python 3,或者你正在使用Python 2,并已列入上面的线,这里是你的答案:

main.py

import pkg1.util as util 

test.py取决于你是否认为pkg1pkg2是两种方式,你会使用那些总是以相同的方式部署在一起的东西,或者它们是否总是在半顶级独立部署。如果第一个,你可以这样做:

from ..pkg1 import util 

,如果它是第二个选项,这一点:

import pkg1.util as util 

这意味着,当然,你总是从目录中运行的Python中main.py是,或者那个目录在PYTHONPATH或由于某种原因(如成为主要的Python站点包目录)在sys.path结束。

+0

如果在`PYPATH`中出于某种原因存在一个不同的`pkg1`,那么我是否仍然会用这两个选项导入* this *`pkg1`? – 2011-01-23 00:19:42

1

从main.py:

import pkg1.util 

从test.py:

from ..pkg1 import util