我在vscode中有以下结构:
development
.vscode
|____settings.json
src
extract
|___extract.py
utils
|___ranking.py
build
|__model.py
words.txt
.env
我想运行extract.py,我得到以下错误:
ModuleNotFoundError: No module named 'utils.ranking'
和我的一些extract.py看起来像:
import utils.ranking as qr
f = open('../words.txt')
f = f.readlines()
这些是最上面的几行。ranking.py包含一个函数ranking
现在我知道这段代码的工作原理,因为它在pycharm。唯一的问题是,我没有像在pycharm中那样将目录标记为源代码。所以我已经按照堆栈溢出的步骤,并在src文件夹下创建了一个。env文件,它看起来像:
PYTHONPATH=./src
然后编辑设置。Json,看起来像:
{
"python.pythonPath": "/conda/envs/test01/bin/python",
"python.envFile": "${workspaceFolder}/.env"
}
然后当我运行extract.py时,我仍然得到相同的错误。是什么导致了这种情况?我还能做什么呢?vscode新手!
你需要这样设置:
"python.envFile": "${workspaceFolder}/.env", //not need
"terminal.integrated.env.windows": {
"PYTHONPATH": "${workspaceFolder}/src"
}
您所设置的设置,仅在调试模式下有效。你可以看看官方文档。
PYTHONPATH可以通过终端设置设置(terminal.integrated.env。*)和/或在中。文件
终端设置PYTHONPATH会影响在终端中运行。由一个用户,以及任何操作的为通过终端路由的用户执行扩展,例如调试。然而,在这种情况下,当扩展正在执行时不通过终端路由的操作,例如使用衬板或格式化器,则此设置不会对模块查找。
当使用.env文件设置PYTHONPATH时,它将影响扩展代表您执行和由调试器执行的操作,但是它不会影响在终端上运行的工具。
如果需要,可以使用这两个方法设置PYTHONPATH。