的同級目錄:導入蟒模塊在包相鄰鑑於以下Python項目結構程序
- example_dir
- alpha.py
- beta.py
- 智/ __ init__.py
- chi/delta.py
- epsilon/__ init__.py
- 小量/ fudge.py
凡alpha.py包含:
from beta import beta_var
print(beta_var)
from chi.delta import delta_var
print(delta_var)
from epsilon.fudge import fudge_var
print(fudge_var)
beta.py包含:
from chi.delta import delta_func
beta_var = delta_func()
chi.py包含:
delta_var = 42
def delta_func():
return 69
而且fudge.py包含:
from chi.delta import delta_func
fudge_var = delta_func()
我可以直接運行alpha.py預期。
我也可以運行beta.py。
但是當我運行fudge.py,無論是通過python epsilon/fudge.py
或cd epsilon && python fudge.py
,Python的顯示錯誤:
導入錯誤:沒有模塊名爲chi.delta
如何運行軟糖。 py直接成功訪問delta_func
定義在delta.py,同時仍然能夠運行alpha.py?理想情況下,我想從epsilon子目錄中調用python fudge.py
。
我以爲我理解了Python模塊和包的基礎知識,但也許我沒有,因爲這似乎比它需要更加困難!
你能夠做到:'from ..chi.delta import delta_func'? –
啊,我明白了。 'example_dir'文件夾中沒有'__init __。py'。創建它,它應該工作 –
@MoinuddinQuadri創建_example_dir/\ _ \ _ init \ _ \ _。py_並使用'..chi.delta'既不_alpha.py_也不_fudge.py_工作。運行_alpha.py_引發_ValueError:嘗試相對導入超出頂層package_。運行_epsilon/fudge.py_會引發_ValueError:試圖在非package_中進行相對導入。 – ybakos