2011-01-23 94 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