如果我有這樣的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