【发布时间】:2021-08-30 09:12:23
【问题描述】:
如果我有
a.py
b.py
在b.py 我可以import a
如果我有
c.py
m
a.py
b.py
然后在c.py 做import m.b,突然在b.py 我得到ModuleNotFoundError: No module named 'a'
有什么问题?我看不出第二种情况与第一种情况有何不同
所以...在最初启动的模块的目录中搜索模块。我只是不明白其中的原因。
我不是在问如何解决这个问题。而是先问为什么会出现问题……
(在 Python 3.8.8 上测试)
【问题讨论】:
-
这能回答你的问题吗? Import a file from a subdirectory?
-
顺便说一句,我发现在开发多模块包时处理此类问题的最佳方法是以可编辑模式安装项目 - 请参阅stackoverflow.com/questions/35064426/…。然后所有的导入语句将从同一个源根目录开始。
-
@warvariuc 在没有明确指定它是相对路径的情况下,它没有回答为什么它不起作用。然而,当所有模块都在同一个目录中时它可以工作
-
@Hrisip。您有模块
a的绝对路径,因此,您的脚本在顶层的根目录中需要模块a。您可以通过像这样导入a来修复它:import m.a或from . import a
标签: python python-3.x