vscode python 虚拟环境插件_VScode 在 Python 虚拟环境 virtualenv 中无法正常使用调试功能...

在Manjaro Linux上,使用VSCode进行Python开发时,在virtualenv环境中遇到调试问题,代码被直接执行而无法正常调试。通过尝试不同虚拟环境和插件设置,发现可能是VSCode的Python扩展donjayamanne.python的问题,该问题在后续插件更新中已得到修复。
摘要由CSDN通过智能技术生成

最近安装了 vscode 想要学习一下怎么用它来编写 Python ,结果今天遇到问题了。在 virtualenv 环境中启动vscode 却没办法正常调试。

基本环境

系统: manjaro Linux 17.0.2

python: python 3.6.2

vscode: 1.16.0

--扩展: donjayamanne.python 0.7.0

症状描述

使用终端进入虚拟环境后启动vscode 或 设置中指定解释器位置"python.pythonPath": "虚拟目录/bin/python"。任意一种方式启动vscode(最后的症状都一样)。

点击 F5 之后虽然调试用的工具条会出现,但是代码却被直接执行了,和直接运行代码的效果一样,而工具条除了停止以外,其他功能都没反应。

求解决办法,还是说都这样?这不科学啊!

配置文件包括:

# setting.json

{

"files.autoSave": "afterDelay",

"python.pythonPath": "~/pyStudy/venv/bin/python",

}

# launch.json 这个应该是自动生成的没动过

{

// 使用 IntelliSense 了解相关属性。

// 悬停以查看现有属性的描述。

// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387

"version": "0.2.0",

"configurations": [

{

"name": "Python",

"type": "python",

"request": "launch",

"stopOnEntry": true,

"pythonPath": "${config:python.pythonPath}",

"program": "${file}",

"cwd": "${workspaceRoot}",

"env": {},

"envFile": "${workspaceRoot}/.env",

"debugOptions": [

"WaitOnAbnormalExit",

"WaitOnNormalExit",

"RedirectOutput"

]

},

{

"name": "PySpark",

"type": "python",

"request": "launch",

"stopOnEntry": true,

"osx": {

"pythonPath": "${env:SPARK_HOME}/bin/spark-submit"

},

"windows": {

"pythonPath": "${env:SPARK_HOME}/bin/spark-submit.cmd"

},

"linux": {

"pythonPath": "${env:SPARK_HOME}/bin/spark-submit"

},

"program": "${file}",

"cwd": "${workspaceRoot}",

"env": {},

"envFile": "${workspaceRoot}/.env",

"debugOptions": [

"WaitOnAbnormalExit",

"WaitOnNormalExit",

"RedirectOutput"

]

},

{

"name": "Python Module",

"type": "python",

"request": "launch",

"stopOnEntry": true,

"pythonPath": "${config:python.pythonPath}",

"module": "module.name",

"cwd": "${workspaceRoot}",

"env": {},

"envFile": "${workspaceRoot}/.env",

"debugOptions": [

"WaitOnAbnormalExit",

"WaitOnNormalExit",

"RedirectOutput"

]

},

{

"name": "Integrated Terminal/Console",

"type": "python",

"request": "launch",

"stopOnEntry": true,

"pythonPath": "${config:python.pythonPath}",

"program": "${file}",

"cwd": "",

"console": "integratedTerminal",

"env": {},

"envFile": "${workspaceRoot}/.env",

"debugOptions": [

"WaitOnAbnormalExit",

"WaitOnNormalExit"

]

},

{

"name": "External Terminal/Console",

"type": "python",

"request": "launch",

"stopOnEntry": true,

"pythonPath": "${config:python.pythonPath}",

"program": "${file}",

"cwd": "",

"console": "externalTerminal",

"env": {},

"envFile": "${workspaceRoot}/.env",

"debugOptions": [

"WaitOnAbnormalExit",

"WaitOnNormalExit"

]

},

{

"name": "Django",

"type": "python",

"request": "launch",

"stopOnEntry": true,

"pythonPath": "${config:python.pythonPath}",

"program": "${workspaceRoot}/manage.py",

"cwd": "${workspaceRoot}",

"args": [

"runserver",

"--noreload",

"--nothreading"

],

"env": {},

"envFile": "${workspaceRoot}/.env",

"debugOptions": [

"WaitOnAbnormalExit",

"WaitOnNormalExit",

"RedirectOutput",

"DjangoDebugging"

]

},

{

"name": "Flask",

"type": "python",

"request": "launch",

"stopOnEntry": false,

"pythonPath": "${config:python.pythonPath}",

"program": "fully qualified path fo 'flask' executable. Generally located along with python interpreter",

"cwd": "${workspaceRoot}",

"env": {

"FLASK_APP": "${workspaceRoot}/quickstart/app.py"

},

"args": [

"run",

"--no-debugger",

"--no-reload"

],

"envFile": "${workspaceRoot}/.env",

"debugOptions": [

"WaitOnAbnormalExit",

"WaitOnNormalExit",

"RedirectOutput"

]

},

{

"name": "Flask (old)",

"type": "python",

"request": "launch",

"stopOnEntry": false,

"pythonPath": "${config:python.pythonPath}",

"program": "${workspaceRoot}/run.py",

"cwd": "${workspaceRoot}",

"args": [],

"env": {},

"envFile": "${workspaceRoot}/.env",

"debugOptions": [

"WaitOnAbnormalExit",

"WaitOnNormalExit",

"RedirectOutput"

]

},

{

"name": "Pyramid",

"type": "python",

"request": "launch",

"stopOnEntry": true,

"pythonPath": "${config:python.pythonPath}",

"cwd": "${workspaceRoot}",

"env": {},

"envFile": "${workspaceRoot}/.env",

"args": [

"${workspaceRoot}/development.ini"

],

"debugOptions": [

"WaitOnAbnormalExit",

"WaitOnNormalExit",

"RedirectOutput",

"Pyramid"

]

},

{

"name": "Watson",

"type": "python",

"request": "launch",

"stopOnEntry": true,

"pythonPath": "${config:python.pythonPath}",

"program": "${workspaceRoot}/console.py",

"cwd": "${workspaceRoot}",

"args": [

"dev",

"runserver",

"--noreload=True"

],

"env": {},

"envFile": "${workspaceRoot}/.env",

"debugOptions": [

"WaitOnAbnormalExit",

"WaitOnNormalExit",

"RedirectOutput"

]

},

{

"name": "Attach (Remote Debug)",

"type": "python",

"request": "attach",

"localRoot": "${workspaceRoot}",

"remoteRoot": "${workspaceRoot}",

"port": 3000,

"secret": "my_secret",

"host": "localhost"

}

]

}

更新描述(2017年09月10日)

问题还没有解决,但是感谢 @laxtiz 首先提供的帮助,按照提示。我做了如下操作和尝试,并且发现了一个有趣的事情:

回复了VScode默认的设置,删除“用户设置”中 Python 的路径。

在正常环境而非虚拟环境中启动 VScode

重新创建了两个虚拟环境:

venv —— 使用Python3 自带的 pyvenv 工具创建:python -m venv venv

test —— 使用传统的 virtualenv 工具创建:virtualenv test

本来是想测试是否是创建工具的问题,结果发现了好玩。

重新设置 VScode 但是使用的是“工作区设置”"python.pythonPath": "/home/gos/pyStudy/venv/bin/python"

a503b5f697739b46c16952137c1d4abf.png

经过测试发现 VScode 和Python扩展donjayamanne.python 可以正确的识别虚拟环境,并且自动使用pip为虚拟环境安装了 pylint

但是按下F5调试功能后仍然是直接跑代码(之前没有说,这个过程感觉比直接运行脚本要慢)

好玩的是,当我交换两个虚拟环境的Python路径时却可以正常使用调试功能,当然了Python的库也是对方环境中的库

问题已终结

问题以及终结,当时应当是 python 插件的问题,我曾在提问之后在插件作者的 github 中看到同样问题的反馈,目前已经修复了问题。

感谢 @laxtiz @kalotswedish 的热心解答

如还有人与到类似问题请两位的回答

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值