给定以下python项目结构:
其中α.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)
β.py包含:
^{pr2}$chi.py公司包含:
delta_var = 42
def delta_func():
return 69
还有软糖.py包含:
from chi.delta import delta_func
fudge_var = delta_func()
我能跑α.py如预期。在
我能跑β.py我也是。在
但当我跑软糖.py,无论是通过python epsilon/fudge.py
还是cd epsilon && python fudge.py
,Python都会显示错误:
ImportError:没有命名的模块中国三角洲
我怎样才能跑软糖.py直接访问在中定义的delta_func
增量.py,同时还能运行α.py?理想情况下,我希望从epsilon子目录中调用python fudge.py
。在
我以为我了解Python模块和包的基本原理,但也许我不懂,因为这似乎比实际需要的困难得多!在
您可以这样直接运行它:
…前提是当前的工作目录是
example_dir
。(不幸的是,我不知道在epsilon
目录中运行脚本的任何方法。)简单说明:简而言之,这将迫使Python将脚本作为包的一部分运行。在
这允许您执行以下操作:
^{pr2}$在您的
fudge.py
中,即使delta.py
位于单独的chi
目录中。它之所以起作用是因为(在本例中)执行python -m
将脚本作为包的一部分运行,包中包含example_dir
中的所有目录。在相关问题 更多 >
编程相关推荐