2
我有一個簡單的Python包目錄結構如下:Python模塊,引用同一包中的其他模塊?
wibble
|
|-----foo
| |----ping.py
|
|-----bar
| |----pong.py
簡單的問題:我將如何引用ping.py
函數/類從pong.py
?仔細查看文檔,這看起來就像在wibble
,foo
和bar
的根目錄中創建__init__.py
文件一樣簡單,然後從pong.py
開始執行類似from wibble.foo.ping import important_function
的操作。然而,嘗試這導致No module named wibble.foo.ping
。
我確定我錯過了某處文檔中的某些東西,因爲這一定是可以做到的。我對module
和namespace
之間的區別也有點朦朧,我的背景是c#.net,所以這裏的任何類比都會有用。
在Windows上,所以這將是'PATH =%PATH%; c:\ path \ to \ wibble'(只是因爲c#.net引用而猜測) – alan 2012-04-24 19:56:33
我應該說 - 這是在* nix上開發的。我對這個解決方案的擔憂是,它將包的絕對位置與代碼庫/基礎結構聯繫起來很困難。鑑於這些文件相對於對方而言很容易定位,爲什麼'pong'不知道它在'wibble'包中,然後通過這種方式找到'ping'? – growse 2012-04-24 19:58:09
你可以大致猜測pong.py文件的位置,並將wibble文件夾添加到python路徑中,但是如果你使用setup.py這樣的代碼包,代碼會很麻煩,但是這裏的問題是錯誤的做法 – diegueus9 2012-04-24 19:59:59