V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
kevindu
V2EX  ›  Python

在 VSCode 写 Python 的疑问

  •  
  •   kevindu · 2017-12-17 16:12:48 +08:00 · 19092 次点击
    这是一个创建于 2534 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近有个这样的疑问,就是在函数下面写函数文档的时候,PyCharm 就会自动生成模版文档,比如这样

    """
        :param date:
        :return:
    """
    

    但是在 VSCode 中没法这么智能,请问有没有相关的插件,或者大家能不能推荐下 VSCode 下 Python 开发常用好用的插件:-)

    45 条回复    2018-07-08 15:37:09 +08:00
    Kilerd
        1
    Kilerd  
       2017-12-17 16:54:11 +08:00
    我觉得 vs code 写 Python 超级鸡肋。
    对 Pyenv 支持超级不好。
    还是用 PyCharm 吧。
    YuHosi
        2
    YuHosi  
       2017-12-17 17:09:23 +08:00 via iPhone
    我只知道文件头部注释的插件哈哈哈
    LokiSharp
        3
    LokiSharp  
       2017-12-17 17:38:21 +08:00   ❤️ 11
    不要用 VSCode,不要相信前端程序员吹的工具。
    secsilm
        4
    secsilm  
       2017-12-17 19:06:17 +08:00 via Android   ❤️ 2
    怎么三个评论都是反对意见的,我不服!我都是 notebook+vscode,pycharm 太臃肿
    MikeFeng
        5
    MikeFeng  
       2017-12-17 21:01:16 +08:00
    之前用了一段时间 vscode 写 Django,后面换了 pycharm 回不去了,提示很强大
    linuap
        6
    linuap  
       2017-12-17 21:20:12 +08:00
    非回答问题。

    vsc 和 pycharm 都用过一段时间

    最后选择了 emacs :D
    lguan
        7
    lguan  
       2017-12-17 21:24:46 +08:00   ❤️ 1
    @kevindu
    https://github.com/NilsJPWerner/autoDocstring

    总的来说 vs code 对 python 的支持感觉比 sublimetext 还是要好点,也支持断点调试等,楼上有人说不支持 pyenv 支持不太好的情况也不存在,至少我用 mini conda 是没问题的
    jerryshao
        8
    jerryshao  
       2017-12-17 21:46:03 +08:00   ❤️ 1
    hardman
        9
    hardman  
       2017-12-17 22:34:24 +08:00
    我建议试用 VIM
    Kilerd
        10
    Kilerd  
       2017-12-18 00:43:41 +08:00
    @lguan 如果你是同时写多个项目,一个项目一个独立的 python 环境,你就知道 vscode 多难用了。
    lguan
        11
    lguan  
       2017-12-18 00:50:48 +08:00   ❤️ 2
    @Kilerd 我就是写多个项目啊,通过`python.pythonPath`设置即可,这个设置可以放在文件夹级别,也可以放在 workspace 级别,完全没问题
    df4VW
        12
    df4VW  
       2017-12-18 00:52:30 +08:00
    @lguan 同意。。我感觉楼上的几位都没仔细用过 vscode-python,至少没读过文档
    sunwei0325
        13
    sunwei0325  
       2017-12-18 01:02:10 +08:00
    各种 ide 存在就是合理的,自己用不惯不代表别人用不惯。
    congeec
        14
    congeec  
       2017-12-18 01:02:51 +08:00 via iPhone
    如果你用 python3+ type hints, 俩 ide 都没问题。我还是建议用 pycharm,vscode 写 python 性能还是不如 pycharm,而且 pycharm 会对代码做静态分析,你要是坚持用 tyoe annotation, 它能帮你检查出一些类型错误。vscode 调用 mypy 啥的,真的很慢
    congeec
        15
    congeec  
       2017-12-18 01:03:19 +08:00 via iPhone
    Vim 大法好!
    lguan
        16
    lguan  
       2017-12-18 01:15:34 +08:00
    @df4VW 的确是,vscode 专门针对 python 开发有个页面的说明,我仔细读了以后,就代替 sublimetext 来用了,的确该有的都有了
    20015jjw
        17
    20015jjw  
       2017-12-18 03:40:40 +08:00 via Android
    反正我用 vim
    casouri
        18
    casouri  
       2017-12-18 08:23:21 +08:00
    学学 vim 然后用 spacemacs 吧,用了就回不去了
    hxhc
        19
    hxhc  
       2017-12-18 08:51:31 +08:00 via Android
    Python docstring 可以试试
    cls1991
        20
    cls1991  
       2017-12-18 09:54:05 +08:00
    建议直接 PyCharm 吧, 省事
    zhuangzhuang1988
        21
    zhuangzhuang1988  
       2017-12-18 10:02:59 +08:00
    那就用 pycharm 呗
    vscode 只是对前端友好
    Meli55a
        22
    Meli55a  
       2017-12-18 10:51:16 +08:00
    除了 @jerryshao @lguan 说的在点子上,其余全 JB 跑题
    xiaoxinxiaobai
        23
    xiaoxinxiaobai  
       2017-12-18 10:59:46 +08:00 via Android
    @Kilerd 怕是不会用吧。。。
    cszhiyue
        24
    cszhiyue  
       2017-12-18 11:23:35 +08:00   ❤️ 1
    @Kilerd #10 #10
    @Kilerd #1 #1 对 pyenv 挺友好的啊。
    "python.pythonPath": "/usr/local/opt/pyenv/shims/python"
    在设置中这样设置,然后用 pyenv local project_directory xxx
    无痛切换
    cszhiyue
        25
    cszhiyue  
       2017-12-18 11:37:45 +08:00
    @cszhiyue #24 补充 在 user settings 中加上 python.pythonPath 的设置
    cszhiyue
        26
    cszhiyue  
       2017-12-18 11:41:50 +08:00
    @cszhiyue #24 说错了。。应该是在项目目录下 pyenv local xxx
    daya
        27
    daya  
       2017-12-18 11:57:06 +08:00
    不好用,我在 C 文件里 import 了 B,B 里面 import 了 A,用 vscode 在 C 文件里使用 A 里面的类,语法检测就会报错说这个类不存在。
    MemoryCorner
        28
    MemoryCorner  
       2017-12-18 12:12:47 +08:00
    不会用不习惯,要么老老实实回去用 PyCharm,要么自己动手写插件,有啥好抱怨的
    matsuz
        29
    matsuz  
       2017-12-18 13:14:42 +08:00 via iPhone
    这样做看似很智能,但其实限制了程序员只能用这一种风格的 doc string,至少给使用其他风格的人带来了不便。而这不符合 vscode 通用编辑器的定位。

    建议你自己手写 doc string,或者找个相关插件。

    另外我使用 vscode 的过程中没感觉写 python 有任何不便。如 @df4VW 所说,建议大家读一读 vscode python 插件的文档
    quinoa42
        30
    quinoa42  
       2017-12-18 13:24:32 +08:00
    题外话,vim 用 deoplete+jedi 大多数时候很正常,但有些 package (比如 beautifulsoup)会不能正常补全(基本上只有 constructor 能补全),有人遇到过吗?
    matsuz
        31
    matsuz  
       2017-12-18 13:28:59 +08:00 via iPhone   ❤️ 1
    @quinoa42 是这样的,这是 jedi 的问题。

    vscode 等一大票编辑器的智能提示都是基于 jedi,所以也有这个问题。

    要解决这个只能上 PyCharm,它是自己实现的智能提示。效果比 jedi 确实好一些。
    kevindu
        32
    kevindu  
    OP
       2017-12-18 14:08:37 +08:00
    关于这个问题,我用了 @lguan 说的 https://github.com/NilsJPWerner/autoDocstring 挺好用的,谢谢!

    但是还有一个问题是,我在本地新建立了一个分支 git checkout -b,为什么直接就推送到了远程,是下面这两个配置的原因吗?我是不是应该将第一个改为 false,第二个改为 local?

    // 是否启用自动刷新
    "git.autorefresh": true,

    // 控制运行“签出到...”命令时列出的分支的类型。"all" 显示所有 refs,"local" 只显示本地分支,"tags" 只显示标记,"remote" 只显示远程分支。
    "git.checkoutType": "all",
    kevindu
        33
    kevindu  
    OP
       2017-12-18 14:09:47 +08:00
    @Meli55a 哈哈哈哈哈,感谢 @lguan
    matsuz
        34
    matsuz  
       2017-12-18 14:16:13 +08:00
    @kevindu 应该不是这两个设置的问题

    git.autorefresh=true
    git.checkoutType=all

    这两个都是默认设置
    ivechan
        35
    ivechan  
       2017-12-18 15:08:45 +08:00
    vscode 的 vim 插件做的很不错。。
    wanglaihuai
        36
    wanglaihuai  
       2017-12-18 16:47:58 +08:00
    初学者用 VScode 路过,作为新手来说我觉得 VS 做的比 PyCharm 更人性化一点吧。感觉 PyCharm 做大项目才会用到···
    lrannn
        37
    lrannn  
       2017-12-18 17:47:51 +08:00
    用 VS Code 写 C++和 Python,感觉超级难用...或许是我太菜了吧
    xpresslink
        38
    xpresslink  
       2017-12-18 18:03:47 +08:00
    VS Code 是个免费的通用的文本编辑器,你不能期望太高了。
    放着 Pycharm 那么好用的 IDE 你不用非要用 VS Code,Sublime Text 之类受虐。
    当然了,如果你只是偶尔写个小脚本当我没有说。
    hymxm
        39
    hymxm  
       2017-12-18 20:57:57 +08:00
    哪个用着爽就用哪个
    lguan
        40
    lguan  
       2017-12-18 21:54:08 +08:00
    @xpresslink PyCharm 非常好,事实上,Idea 家的 Idea 都是非常不错的,但用 vscode 和 st 也绝不是受虐,相反,ide,编辑器,个人喜好而已,比如对我个人来说,我不能忍受 IDE 的慢,那就偏向编辑器了,vscode 对 python 的支持对我写代码来说已经足够用了,也就没问题了,还有不少人还以用 vim 为荣呢,用什么都不重要,能写出好代码的,都是好码农
    xpresslink
        41
    xpresslink  
       2017-12-19 10:12:53 +08:00
    @lguan 通常 I5 8G SSD 用 Pycharm 是非常流畅的。用机械硬盘启动时间确实有点长。
    你要是同时维护很多个不同环境的 Py 项目你就知道为什么了。
    文本编辑器再怎么配置也达不到专业 IDE 的三之一水平,项目管理,版本控制,重构,代码分析,远程调试之类差得太多。当然了大多数人可能用不到这些特性。
    lguan
        42
    lguan  
       2017-12-19 15:51:34 +08:00
    @xpresslink 为啥你们一直觉得我没不是维护不同环境的 python 项目呢...我不但维护不同环境的 python 项目,还同时维护数个 ruby 的项目,数个安卓项目,甚至数个 iOS 项目,你说的对,文本编辑器从专业性上是肯定比不上 IDE 的,否则 IDE 就没有存在的必要了,我只能说,各有千秋,看每个人自己的取舍了
    1oNflow
        43
    1oNflow  
       2018-04-13 16:03:03 +08:00
    @lguan 你好,用了你提到的插件,感觉挺好用的,但是有个疑问

    """[summary]

    Arguments:
    a {[type]} -- [description]
    b {[type]} -- [description]
    """
    自动生成以上注释后,光标停在 summary 那里,而且直接输入会替换掉 summary,我看到作者的说明 gif 里他写完 summary 直接就跳到了下面的{[type]}那里,但是我按了回车和 tab 等快捷键,还是在编辑 summary,所以想问下哪个按键可以直接跳到下一个高亮的可编辑部分啊?
    wuyazi
        44
    wuyazi  
       2018-07-08 15:34:56 +08:00 via iPhone
    vscode 支持 pipenv 和 git submodule
    pyCharm 连 git submodule 都不支持
    wuyazi
        45
    wuyazi  
       2018-07-08 15:37:09 +08:00 via iPhone
    强大个屁
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   996 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:11 · PVG 03:11 · LAX 11:11 · JFK 14:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.