Python项目,有着Pycharm这么优秀的工具在,其他IDE工具基本都显得有点相形见绌。只是Pycharm社区版不支持远程调试,有些语言也支持不好,比如Markdown
就显示很弱。因此,有时候不得不依靠其他IDE工具。
这个时候,可以选择vscode。vscode这些年越来越强了,但开发python项目,vscode配置不容易使用,总是遇到这个问题,或者那个问题上,长时间找到办法就搁置了。能否在vscode上,进行优雅的开发python代码,达到或者超过Pycharm那种开发体验?我觉得是能。这两天 ,把之前遇到的几个问题都解决了。
我们看下Pycharm开发python的一些优势:
接下来我们看看如何达到上述的效果。问题1就不写了,vscode天然支持。
vscode支持python的插件,主要有以下几个插件需要安装下。
Python Extension Pack
vscode的python扩展。Python Test Explorer for Visual Studio Code
pytest浏览和执行的插件。VSCode Python Docstring Generator
注释文档生成的插件。安装完插件,正常情况下就可以进行Python项目开发了,但体验不好,问题比较多,遇到如下问题:
这个问题主要是环境变量PYTHONPATH
需要设置,默认是空。解决办法,设置文件settings.xml
增加以下的python配置,可以根据自己的系统进行选择。
{
"terminal.integrated.env.osx": {
"PYTHONPATH": "${workspaceFolder}/",
} ,
"terminal.integrated.env.linux": {
"PYTHONPATH": "${workspaceFolder}/",
},
"terminal.integrated.env.windows": {
"PYTHONPATH": "${workspaceFolder}/",
},
"python.envFile": "${workspaceFolder}/.env",
}
在当前python工程目录下,创建.env
文件,内容如下:
PYTHONPATH=./
PYTHONPATH=
可以设置多个目录,windows
下多个目录使用;
,linux
下使用:
分割。
经过上述设置,即使在vscode的终端里执行,也不会报模块找不到的问题了。
Pytest
单元测试,不能快速浏览和执行用例这个问题是pytest
设置问题,在settings.xml
文件中增加以下配置:
{
"python.testing.unittestEnabled": false,
"python.testing.nosetestsEnabled": false,
"python.testing.pytestEnabled": true,
"python.testing.autoTestDiscoverOnSaveEnabled": true,
"pythonTestExplorer.testFramework": "pytest",
}
再确保已经安装了Python Test Explorer for Visual Studio Code
插件。效果如下:
可以执行单个文件,单个类,单个方法,不比Pycharm差。
Pylint
检查,import
子目录下的模块,总是报错,实际运行又没问题这个问题处理比较麻烦,有强迫症,对红色的波浪线不能忍受。网上搜索了很多办法也没得到很好的解决,比较常见处理方法就是屏蔽import
失败规则项,这个肯定不是处理该问题的最好方法。
好再是,办法却非常简单,只需要在settings.xml
文件中加上一个配置,指定pylint的路径。问题就得到完美解决了:
{
"python.linting.pylintPath": "/Library/Frameworks/Python.framework/Versions/3.9/bin/pylint"
}
当然,要记得先安装
pylint
,命令是pip3 install pylint
很久之前试过,没找到方法。现在的vscode好像已经支持了,相比Pycharm调试过程中也有了交互能力。
进入调试模式,选择Debug Console
菜单,就进入了调试交互模式,可以在下图最下面的行输入框中直接敲入python代码。
如果Debug Console
中python代码没有智能提示功能,可以把python.language
设置为Mircosoft
或Jedi
试试。
"python.languageServer": "Microsoft",
没有下面这个配置,可能也不影响执行,如果有F5或ctrl+F5执行问题,可以添加上。
在.vscode
目录下,新建launch.json
文件,文件内容如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python执行当前文件",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"env": {
"PYTHONPATH":"${workspaceRoot}"
},
"envFile":"${workspaceRoot}/.env"
}
]
}
我们回顾下Pycharm支持的几个优势,在vscode中基本也能够实现,虽然并不能全部比得过Pycharm。但别忘记了,vscode有着海量的插件,支持海量的语言,这个是Pycharm无法比拟的。汇总的配置如下:
{
"python.defaultInterpreterPath": "/Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9",
"python.testing.cwd": "",
"python.languageServer": "Microsoft",
"terminal.integrated.env.osx": {
"PYTHONPATH": "${workspaceFolder}/:${workspaceFolder}/src:${workspaceFolder}/tests",
},
"terminal.integrated.env.linux": {
"PYTHONPATH": "${workspaceFolder}/:${workspaceFolder}/src:${workspaceFolder}/tests",
},
"terminal.integrated.env.windows": {
"PYTHONPATH": "${workspaceFolder}/;${workspaceFolder}/src;${workspaceFolder}/tests",
},
"python.envFile": "${workspaceFolder}/.env",
"python.testing.unittestEnabled": false,
"python.testing.nosetestsEnabled": false,
"python.testing.pytestEnabled": true,
"python.testing.autoTestDiscoverOnSaveEnabled": true,
"pythonTestExplorer.testFramework": "pytest",
"python.linting.pylintPath": "/Library/Frameworks/Python.framework/Versions/3.9/bin/pylint",
"editor.formatOnSave": true
}
使用vscode开发python项目,vscode设置不是很容易,网上的帖子很多都是零碎的,不一定能找到你想要的答案。本文罗列了一些常见的问题及其解决方法,与爱好python的同学共勉。后续有遇到新的问题,再一并补充进来。
当然,遇到vscode设置的问题,最好先到官网查询。