这是我的项目的结构:
project (folder)
main.py
assets (folder)
a.py
b.py
当我将模块a导入模块b并运行main.py时,我得到No module named 'a'
。
但是如果我直接运行b.py,它导入a.py很好。
a和b在同一个目录中,所以我遗漏了什么?顺带一提,我用的是Python 3.10。
main.py:
import assets.b as bb
a.py:
def func(x):
print(x)
b.py:
import a
a.func('hello')
按如下方式更新您的b.py
from . import a
a.func('hello')
或
from assets import a
a.func('hello')
在第一种情况下,我们告诉解释器检入与文件相同的位置。在第二种情况下,我们只使用全路径。用python 3.10.1和3.6测试
如果你使用文件夹结构,最好根据你的main.py
来固定你的执行路径和相对路径。意味着不能从assets
运行python3.10 b.py
。
如果您希望从assets
文件夹执行python3.10 b.py
和python3.10 main.py
的功能,则按如下方式更新代码。
try:
from . import a
except:
import a
a.func('hello')
如果你坚持使用像PyCharm这样的IDE,那么这些错误很容易发现和修复。