我有一個「規範的文件結構」這樣的(我給懂事的名字來緩解讀):相關進口噩夢,pep 366如何運作?
mainpack/
__main__.py
__init__.py
- helpers/
__init__.py
path.py
- network/
__init__.py
clientlib.py
server.py
- gui/
__init__.py
mainwindow.py
controllers.py
在這種結構中,包含在每個包例如模塊可能要訪問的helpers
公用事業通過在一些相對進口,如:
# network/clientlib.py
from ..helpers.path import create_dir
該計劃是拼命地跑「爲腳本」使用__main__.py
文件中這樣說:
python mainpack/
試圖跟隨PEP 366我已經把__main__.py
這些行:
___package___ = "mainpack"
from .network.clientlib import helloclient
但運行時:
$ python mainpack
Traceback (most recent call last):
File "/usr/lib/python2.6/runpy.py", line 122, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "path/mainpack/__main__.py", line 2, in <module>
from .network.clientlib import helloclient
SystemError: Parent module 'mainpack' not loaded, cannot perform relative import
有什麼不對?處理和有效使用相關進口的正確方法是什麼?
我也嘗試將當前目錄添加到PYTHONPATH,沒有任何更改。
我能夠從我啓動目錄導入它,我已經看這個更好 – pygabriel 2010-05-31 15:54:44
@pygabriel是否有可能爲你壓縮它並把它放在網上的某個地方?當然是 – extraneon 2010-06-01 07:09:45
! http://dl.dropbox.com/u/1276730/mainpack.zip – pygabriel 2010-06-01 07:41:25