当我有这个文件夹结构时
mod1 包含一个函数
def mymod():
return 5
mod2.py 有
from d1.mod1 import mymod
print(mymod)
错误:ModuleNotFoundError:没有名为“d1”的模块
我也尝试过执行 sys.path.insert 看起来很简单,我一直在撕扯我的头发。 VS Code 识别导入
谢谢
看起来你直接执行
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
就可以工作