Sublime vs. PyCharm for Python开发

时间:2014-01-22 20:04:11

标签: python sublimetext2 sublimetext pycharm sublime-text-plugin

我已经使用ST2很长一段时间了,鉴于python现在是我的主要语言,我决定尝试PyCharm。它有些混乱,我对Sublime的爱让我远离。然而,PyCharm能以某种方式完成以下Sublime无法做到的事情:

  1. 在对象后面键入一个句点并获取其所有属性的CORRECT列表(Sublime可以执行此操作,排序,但它返回随机属性)
  2. 在整个项目/文件夹中重构变量
  3. 显示使用它们定义的方法的文档字符串
  4. 它有更重要的功能,Sublime还不能做到。我在Sublime中已经安装了很多软件包,除了上面的3件事之外,几乎可以做PyCharm。

    回到问题:鉴于Python不是强类型语言,PyCharm如何提供此功能?

1 个答案:

答案 0 :(得分:10)

如果您正在寻找更好的自动完成功能,请尝试通过套餐控制提供的SublimeCodeIntel。索引内置模块和第三方软件包需要一段时间,但一旦准备好它就会非常有用。例如,使用Pandas,我可以定义一个数据帧:

df = pd.DataFrame(some_input_data)

然后键入df.,并出现DataFrame对象的所有关联类和方法。要进行此设置,您需要将以下内容添加到用户首选项(Preferences -> Settings - User):

"auto_complete_triggers":
[
    {
        "characters": ".",
        "selector": "source"
    }
]

以及您可能拥有的任何其他触发器。

更新

虽然SublimeCodeIntel是一个不错的软件包,它并不总是运行良好 - 它有时会发现找到新安装的模块的问题,数据库可能会被破坏,自动完成时有时会出现严重延迟,它在virtualenvs上有问题,以及有时它只是不起作用。如果您使用的是Sublime Text 3,我强烈建议您使用Anaconda(与Anaconda Python发行版无关)。一旦你设置它(一个非常简短的过程,基本上你只是指定你想要使用哪个Python解释器),它就可以了。没有数据库可以初始化或损坏,它会在你添加新软件包时自动发现,它在后台运行时非常不引人注目......我不能说它有多好处。它使用JEDI自动完成模块等,并且快速准确。它自动确定哪些类型变量,并使用可在其上调用的适当方法和类填充完成。你可以让它完成参数完成,但这对我来说有点烦人,所以我把它关了。它不能做的一件事是方法链,但没有什么是完美的。它还包括用于代码复杂性检查和linting的模块,这很好,但是我不需要它,并且只想在lint时想要lint,所以我也关闭了它。它和SublimeCodeIntel之间的另一个主要区别是Anaconda是特定于Python的,而SCI支持许多不同的语言。

我强烈建议尝试一下Anaconda。除了方法链接,我一直很满意,并没有回去。您可以做的一件很酷的事情是为项目文件中的"python_interpreter"设置分配不同的值,这样您就可以轻松使用virtualenvs,或者(就像我一样)为Python 2编码打开一个项目,为Python 3打开另一个项目