本人是在写实验代码的时候出现了这个问题, mac os, python 3.9。这个project一开始的内容比较简单,只有一个模型(.py)文件去跑数据,一个(.ipynb)去画图看结果,随着内容的丰富,后面做了很多相关的研究,写了很多别的模型,然后还有很多用来做对比实验的代码,为了便于维护和更新,以及让整个project看起来更加的清晰,我在一段时间以后决定把不同的代码文件放在不同的地方,把模型集中在一起去管理,把实验的代码放在另一个文件夹中,大致的结构如下
project-file
- models
- model1.py
- model2.py
- model3.py
- experiment_codes
- ex1.ipynb
- ex2.py
首先是直观的写法, 在ex2.py中输入
from models.model1 import *
这个写法在pycharm中直接使用是没有问题的,但是在vscode中不行,因为vscode并不能读取到project-file中某个文件夹内的文件。报错如下
ModuleNotFoundError: No module named 'models'
所以需要将对应文件夹,在这里也就是models的路径加入到vscode运行时读取的路径中,代码如下
import sys
import os
curPath = os.path.abspath(os.path.dirname('.\models'))
sys.path.append(curPath)
from models.model1 import *
这样就可以顺利的运行代码了。
同样的问题也会出现在(.ipynb)文件中,如果直接调用业户出现找不到模块的情况,这个时候也需要我们来手动添加路径,但是写法和.py文件中有所不同,也就是在上述的ex1.ipynb文件中,应当使用的是根目录的路径,而不是models文件夹所在的绝对路径。代码如下
import sys
import os
curPath = os.path.abspath(os.path.dirname('.\models'))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
from models.model2 import *