不同文件夹中的模块出现 ModuleNotFoundError

问题描述 投票:0回答:1

当我有这个文件夹结构时

mod1 包含一个函数

def mymod():
    return 5

mod2.py 有

from d1.mod1 import mymod

print(mymod)

错误:ModuleNotFoundError:没有名为“d1”的模块

我也尝试过执行 sys.path.insert 看起来很简单,我一直在撕扯我的头发。 VS Code 识别导入

谢谢

python-3.x
1个回答
0
投票

看起来你直接执行

mod2.py
,这意味着项目路径是
PYLAB/d2
。这里没有
d1
模块,它实际上位于
PYLAB
下,
d2
的父文件夹。

要解决这个问题,您可以添加

d1
所在文件夹的路径,即
PYLAB
(或
d2/..
)。

mod2.py

# add the folder where d1 module is in to sys path
import sys
sys.path.append(os.path.dirname(os.path.dirname(__file__)))

# "os.path.dirname(os.path.dirname(__file__))" means "mod2.py -> d2 -> PYLAB"

from d1.mod1 import mymod

print(mymod)

“VS Code 识别导入”,因为您打开 PYLAB 并且 VSCode 在分析代码语法时会将此文件夹识别为根文件夹(/项目路径)。

如果你在 PYLAB 下有一个 py 文件(假设是

test.py
)并在
mod2.py
中调用
test.py
from d1.mod1 import mymod
中的
mod2.py
直接执行
test.py

就可以工作
© www.soinside.com 2019 - 2024. All rights reserved.