在 VSCode 中编写 Python 代码时遇到的常见问题与解决方案
最近有个这样的疑问,就是在函数下面写函数文档的时候,PyCharm 就会自动生成模版文档,比如这样
"""
:param date:
:return:
"""
但是在 VSCode 中没法这么智能,请问有没有相关的插件,或者大家能不能推荐下 VSCode 下 Python 开发常用好用的插件:-)
在 VSCode 中编写 Python 代码时遇到的常见问题与解决方案
我觉得 vs code 写 Python 超级鸡肋。
对 Pyenv 支持超级不好。
还是用 PyCharm 吧。
帖子回复:
在VSCode里写Python,有几个坑我踩过,分享一下我的经验。
1. 环境/解释器问题 最常见的就是VSCode没选对Python解释器。右下角状态栏点一下Python版本,选对虚拟环境或者系统解释器。如果列表是空的,检查Python扩展装没装,或者路径对不对。
2. 导入模块报错 (ImportError) 这通常是因为工作目录或者PYTHONPATH不对。有几种搞法:
- 在
.vscode/settings.json里设置"python.terminal.executeInFileDir": true,让终端在当前文件目录跑。 - 用相对导入时,确保文件在正确的包结构里(有
__init__.py)。 - 对于项目依赖,老实点,在项目根目录用
pip install -r requirements.txt。
3. 调试器不工作
确保launch.json配置对了。一个基础的运行当前文件的配置长这样:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true
}
]
}
断点打在可执行行上,别打在空行或者注释上。
4. 代码提示/智能感知 (IntelliSense) 太慢或失效
- 先等语言服务器加载完,尤其是刚打开项目时。
- 检查打开的文件夹是不是太大了,可以加个
.vscode/settings.json排除无关文件:"files.exclude": { "**/__pycache__": true, "**/.git": true }。 - 实在不行,命令面板里运行
Python: Restart Language Server重启一下。
5. 格式化工具 (如 black, autopep8) 不按预期工作
首先确保工具装在了当前选择的解释器环境里。然后在settings.json里指定:
{
"python.formatting.provider": "black",
"[python]": {
"editor.defaultFormatter": "ms-python.python",
"editor.formatOnSave": true
}
}
editor.formatOnSave设成true能保存时自动格式化。
6. 终端行为异常(比如在错误目录激活)
前面提过的"python.terminal.executeInFileDir": true能解决大部分问题。如果用的是PowerShell,可能还需要配置默认的Shell配置文件。
7. 测试发现器找不到测试 (pytest/unittest)
对于pytest,在settings.json里加:
{
"python.testing.pytestEnabled": true,
"python.testing.unittestEnabled": false,
"python.testing.cwd": "${workspaceFolder}",
"python.testing.pytestArgs": ["."]
}
确保测试文件命名符合规范(test_*.py 或 *_test.py),测试类/函数也以test开头。
总结一下: 大部分问题出在环境配置、路径或者扩展设置上,对着这几个地方查一般能解决。
我只知道文件头部注释的插件哈哈哈
不要用 VSCode,不要相信前端程序员吹的工具。
怎么三个评论都是反对意见的,我不服!我都是 notebook+vscode,pycharm 太臃肿
之前用了一段时间 vscode 写 Django,后面换了 pycharm 回不去了,提示很强大
非回答问题。
vsc 和 pycharm 都用过一段时间
最后选择了 emacs :D
https://github.com/NilsJPWerner/autoDocstring
总的来说 vs code 对 python 的支持感觉比 sublimetext 还是要好点,也支持断点调试等,楼上有人说不支持 pyenv 支持不太好的情况也不存在,至少我用 mini conda 是没问题的
VSCode 有 Snippets
https://code.visualstudio.com/docs/editor/userdefinedsnippets
我建议试用 VIM
如果你是同时写多个项目,一个项目一个独立的 python 环境,你就知道 vscode 多难用了。
我就是写多个项目啊,通过python.pythonPath设置即可,这个设置可以放在文件夹级别,也可以放在 workspace 级别,完全没问题
同意。。我感觉楼上的几位都没仔细用过 vscode-python,至少没读过文档
各种 ide 存在就是合理的,自己用不惯不代表别人用不惯。
如果你用 python3+ type hints, 俩 ide 都没问题。我还是建议用 pycharm,vscode 写 python 性能还是不如 pycharm,而且 pycharm 会对代码做静态分析,你要是坚持用 tyoe annotation, 它能帮你检查出一些类型错误。vscode 调用 mypy 啥的,真的很慢
Vim 大法好!
的确是,vscode 专门针对 python 开发有个页面的说明,我仔细读了以后,就代替 sublimetext 来用了,的确该有的都有了
反正我用 vim
学学 vim 然后用 spacemacs 吧,用了就回不去了
Python docstring 可以试试
建议直接 PyCharm 吧, 省事
那就用 pycharm 呗
vscode 只是对前端友好
除了 说的在点子上,其余全 JB 跑题
怕是不会用吧。。。
#10 #10
#1 #1 对 pyenv 挺友好的啊。
“python.pythonPath”: "/usr/local/opt/pyenv/shims/python"
在设置中这样设置,然后用 pyenv local project_directory xxx
无痛切换
#24 补充 在 user settings 中加上 python.pythonPath 的设置
#24 说错了。。应该是在项目目录下 pyenv local xxx
不好用,我在 C 文件里 import 了 B,B 里面 import 了 A,用 vscode 在 C 文件里使用 A 里面的类,语法检测就会报错说这个类不存在。
不会用不习惯,要么老老实实回去用 PyCharm,要么自己动手写插件,有啥好抱怨的
这样做看似很智能,但其实限制了程序员只能用这一种风格的 doc string,至少给使用其他风格的人带来了不便。而这不符合 vscode 通用编辑器的定位。
建议你自己手写 doc string,或者找个相关插件。
另外我使用 vscode 的过程中没感觉写 python 有任何不便。如 所说,建议大家读一读 vscode python 插件的文档
题外话,vim 用 deoplete+jedi 大多数时候很正常,但有些 package (比如 beautifulsoup)会不能正常补全(基本上只有 constructor 能补全),有人遇到过吗?
是这样的,这是 jedi 的问题。
vscode 等一大票编辑器的智能提示都是基于 jedi,所以也有这个问题。
要解决这个只能上 PyCharm,它是自己实现的智能提示。效果比 jedi 确实好一些。
关于这个问题,我用了 说的 https://github.com/NilsJPWerner/autoDocstring 挺好用的
但是还有一个问题是,我在本地新建立了一个分支 git checkout -b,为什么直接就推送到了远程,是下面这两个配置的原因吗?我是不是应该将第一个改为 false,第二个改为 local?
// 是否启用自动刷新 “git.autorefresh”: true,
// 控制运行“签出到…”命令时列出的分支的类型。“all” 显示所有 refs,“local” 只显示本地分支,“tags” 只显示标记,“remote” 只显示远程分支。 “git.checkoutType”: “all”,
应该不是这两个设置的问题
git.autorefresh=true
git.checkoutType=all
这两个都是默认设置
vscode 的 vim 插件做的很不错。。
初学者用 VScode 路过,作为新手来说我觉得 VS 做的比 PyCharm 更人性化一点吧。感觉 PyCharm 做大项目才会用到···
用 VS Code 写 C++和 Python,感觉超级难用…或许是我太菜了吧
VS Code 是个免费的通用的文本编辑器,你不能期望太高了。
放着 Pycharm 那么好用的 IDE 你不用非要用 VS Code,Sublime Text 之类受虐。
当然了,如果你只是偶尔写个小脚本当我没有说。
哪个用着爽就用哪个
PyCharm 非常好,事实上,Idea 家的 Idea 都是非常不错的,但用 vscode 和 st 也绝不是受虐,相反,ide,编辑器,个人喜好而已,比如对我个人来说,我不能忍受 IDE 的慢,那就偏向编辑器了,vscode 对 python 的支持对我写代码来说已经足够用了,也就没问题了,还有不少人还以用 vim 为荣呢,用什么都不重要,能写出好代码的,都是好码农
通常 I5 8G SSD 用 Pycharm 是非常流畅的。用机械硬盘启动时间确实有点长。
你要是同时维护很多个不同环境的 Py 项目你就知道为什么了。
文本编辑器再怎么配置也达不到专业 IDE 的三之一水平,项目管理,版本控制,重构,代码分析,远程调试之类差得太多。当然了大多数人可能用不到这些特性。
为啥你们一直觉得我没不是维护不同环境的 python 项目呢…我不但维护不同环境的 python 项目,还同时维护数个 ruby 的项目,数个安卓项目,甚至数个 iOS 项目,你说的对,文本编辑器从专业性上是肯定比不上 IDE 的,否则 IDE 就没有存在的必要了,我只能说,各有千秋,看每个人自己的取舍了
你好,用了你提到的插件,感觉挺好用的,但是有个疑问
"""[summary]
Arguments:
a {[type]} – [description]
b {[type]} – [description]
“”"
自动生成以上注释后,光标停在 summary 那里,而且直接输入会替换掉 summary,我看到作者的说明 gif 里他写完 summary 直接就跳到了下面的{[type]}那里,但是我按了回车和 tab 等快捷键,还是在编辑 summary,所以想问下哪个按键可以直接跳到下一个高亮的可编辑部分啊?
vscode 支持 pipenv 和 git submodule
pyCharm 连 git submodule 都不支持
强大个屁

