python - 如何在 vscode 中将目录标记为源?尝试了所有可能的解决方案,没有任何效果
问题描述
我在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
然后我编辑 settings.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. *) 和/或在.env 文件中进行设置。
使用终端设置时, PYTHONPATH 会影响用户在终端内运行的任何工具, 以及扩展为通过终端路由的用户执行的任何操作,例如调试。但是,在这种情况下,当扩展程序执行未通过终端路由的操作时,例如使用 linter 或格式化程序,则此设置不会影响模块查找。
当使用 .env 文件设置 PYTHONPATH 时,它将影响扩展程序代表您执行的任何操作以及调试器执行的操作,但不会影响在终端中运行的工具。
如果需要,您可以使用这两种方法设置 PYTHONPATH。
推荐阅读
- grafana - 在 prometheus/grafana 中从零开始绘制计数器
- c# - 控制台应用程序和 Web 应用程序中的 HttpClient 默认安全协议有什么区别
- flutter - 更新后 Flutter 完全崩溃(再次)
- reactjs - 如何使用 POST 响应更新 Redux 存储?
- r - 从数据框(UTM)创建 sf 对象
- c# - 如何从 c# 发送 json Azure DevOps 请求?
- sockets - 多个 websocket 连接是否共享一个 TCP 连接?
- typescript - Codepen 上的打字稿
- python - 如何获取目录以从Python中的另一个文件打开文件
- c# - 无法在 Windows 桌面窗体 .NET Core 应用程序中打开窗体 [设计] 视图