在程序的同级目录相邻的包中导入python模块

2024-05-18 16:16:20 发布

您现在位置:Python中文网/ 问答频道 /正文

给定以下python项目结构:

  • 示例\u dir
    • 在α.py在
    • 在β.py在
    • chi/\uuu init\uy.py
    • 气/增量.py在
    • ε
    • ε/软糖.py在

其中α.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模块和包的基本原理,但也许我不懂,因为这似乎比实际需要的困难得多!在


Tags: 模块项目frompyimportvar增量beta
1条回答
网友
1楼 · 发布于 2024-05-18 16:16:20

您可以这样直接运行它:

python -m epsilon.fudge

…前提是当前的工作目录是example_dir。(不幸的是,我不知道在epsilon目录中运行脚本的任何方法。)


简单说明:简而言之,这将迫使Python将脚本作为包的一部分运行。在

这允许您执行以下操作:

^{pr2}$

在您的fudge.py中,即使delta.py位于单独的chi目录中。它之所以起作用是因为(在本例中)执行python -m将脚本作为包的一部分运行,包中包含example_dir中的所有目录。在

相关问题 更多 >

    热门问题