在具有活动 virtualenv 的 python 模块上使用 vscode 调试器,launch.json 中的“配置文件中的 python 路径无效”
Posted
技术标签:
【中文标题】在具有活动 virtualenv 的 python 模块上使用 vscode 调试器,launch.json 中的“配置文件中的 python 路径无效”【英文标题】:Using vscode debugger on python module with active virtualenv, "the python path in your configuration file is invalid" in launch.json 【发布时间】:2021-11-20 20:40:41 【问题描述】:我想在 vscode 中调试一个 python 模块以节省时间并帮助我弄清楚代码发生了什么。但是我有两个问题(我将更多地关注这篇文章的第一个问题),它们似乎与我没有正确使用 launch.json 有关,我想知道出了什么问题。我正在使用 Mac。
我的模块名为__main__
。它的完整绝对路径是~/Code/APPRES-483/cqs/update-query-definition/__main__.py
(__main__.py
是一个脚本,但该模块似乎也称为__main__
)。
我正在使用~/Code/APPRES-483/venv-cqs/
的 virtualenv。我在~/Code/APPRES-483/cqs/update-query-definition/
中打开了一个 VSCode 窗口。
现在我的launch.json
文件看起来像这样。
"version": "0.2.0",
"configurations": [
"name": "Python: Module",
// "python":"~/Code/APPRES-483/venv-cqs/bin/python",
"type": "python",
"request": "launch",
"module": "__main__",
"pythonArgs":[
"-v",
"--file-to-write", "~/Code/APPRES-483/LOCAL-query-definition.yml"
],
,
]
第一个问题是我实际上无法在launch.json中设置python解释器路径。我在 VSCode 中激活了我的 virtualenv(即我看到了我打算看到的 venv-cqs 的前缀)。
如果我打开一个终端并输入~/Code/APPRES-483/venv-cqs/bin/python
,那将正确打开 venv-cqs/bin 内的 python 终端/可执行文件。如果我添加像"python":"~/Code/APPRES-483/venv-cqs/bin/python"
这样的行,我会收到一条消息“您的调试配置中的python 路径无效。”
我尝试按照https://***.com/a/66885651/6432861 的说明使用 Python:选择解释器命令。我遇到了一些奇怪的行为。
如果我尝试浏览 finder/files 以在 venv-cqs/bin/ 中找到 python 可执行文件,一旦我双击该文件,它实际上并没有进入 vs code 的 python 解释器。如果我将鼠标悬停在左下角,我仍然会在 /usr/local/bin 或其他任何地方看到我的默认 python 安装地址。
但是,如果我复制并粘贴 ~/Code/APPRES-483/venv-cqs/bin/python
而不是尝试浏览文件,这会成功更改 python 解释器,我可以在屏幕的左下角看到它。
代码避免这些错误的唯一方法是,如果我在 launch.json 的配置中没有 python 字段。我知道事情不应该是这样的......我想知道出了什么问题。
我遇到的第二个问题是 pythonArgs。但我会尝试再发一篇关于它的文章,因为这已经足够长了。
【问题讨论】:
~
扩展是一个 shell 功能。不保证它可以在其他地方工作。
那么在vscode中扩展家庭地址的语法是什么?我找不到任何说波浪号不起作用的东西,而且文件左侧的资源管理器工具提示也使用波浪号扩展。
@KlausD。我刚刚发现使用完整的扩展路径(例如/Users/bineyb/Code/....
而不是~
似乎可以解决问题。这与此github票证中讨论的问题相同,但据称他们应该修复它以使波浪号正常工作(它不适合我):github.com/microsoft/vscode/issues/32736
【参考方案1】:
首先,你可以设置
"python.defaultInterpreterPath": "~/Code/APPRES-483/venv-cqs/bin/python",
在 User Settings.json 中指定 python 解释器。如果它不起作用并且 VS Code 仍然在左下角显示默认 python 安装为 python 解释器,删除用户数据文件夹 $HOME/Library/Application Support/Code
和 .~/.vscode
可以重置 VS Code。
其次,设置python
默认为你的工作区选择的解释器,所以一旦你选择venv-cqs
作为python解释器,debug会默认使用它,如果你坚持,设置
"python": "$command:python.interpreterPath"
【讨论】:
我认为这行得通。现在,当我使用 Select Interpreter 命令时,我可以选择use Python from defaultInterpreterPath setting
。但是我仍然很困惑,我之前用"python":"~/Code/APPRES-483/venv-cqs/bin/python"
声明python 的方式有什么问题?为什么那不是一条有效的路径?
@ByronSmith。我使用的是 Windows,完整路径还可以,可能是路径格式错误?以上是关于在具有活动 virtualenv 的 python 模块上使用 vscode 调试器,launch.json 中的“配置文件中的 python 路径无效”的主要内容,如果未能解决你的问题,请参考以下文章
如何运行具有模块的代码,每个模块都在不同的 virtualenv 中?
如何利用virtualenv工具在JupyterHub上以非root权限创建基于Python3.6.6的虚拟环境?
2022流行的 Python 项目虚拟环境创建--virtualenv
在 Fedora 26 上使用 virtualenv venv 时出错