的同级目录:导入蟒模块在包相邻鉴于以下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