【问题标题】:SublimeCodeIntel Autocomplete Fails with Pandas and Numpy使用 Pandas 和 Numpy 的 SublimeCodeIntel 自动完成功能失败
【发布时间】:2014-11-06 05:12:42
【问题描述】:

我正在尝试在 Sublime Text 3 中使用 python 自动完成但未能成功。在多个博客和“设置”指南中推荐使用 Sublimecodeintel。当它工作时,它很棒,但我无法让它与我最常用的两个包 numpy 或 pandas 一起工作。

设置: Mac OS X 10.9.4 我已经使用 Homebrew 安装了 python 2.7、numpy 和 pandas。 我正在使用 sublime text 3,并使用包管理器安装了 sublimecodeintel。

一个例子:

import pandas as pd
import matplotlib.pyplot as plt

fig = plt.figure() # autocomplete and tooltips works fine.

data = pd.read_csv('file.csv') # no autocomplete or tooltips.

自动完成选项和工具提示是在“.”之后的“plt”案例中的访问,然后当我开始在括号中写入时再次访问。 'pd' 情况下什么也没有发生。

我无法找到任何文档或之前的问题。我在设置中错过了什么吗?我的配置路径中缺少什么吗?为什么我的包无法使用自动完成功能!?

配置文件和 codeintel.log 跟随...

非常感谢。

我的 sublimecodeintel 配置文件:

{
    "Python": {
        "python": '/usr/local/bin/python',
        "pythonExtraPaths": [
            "/usr/local/lib/python2.7/site-packages",
            "/usr/local/Cellar/python/2.7.8/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/",
            "/Library/Python/2.7/site-packages/",
            "/Library/Python/2.7/site-packages",
            "/usr/local/lib/python2.7/site-packages"
        ]
    }
}

codeintel.log 中的输出:

+ Info: processing `Python': please wait...
New env with catalogs for 'Python': PyWin32
Updating indexes for 'Python'... The first time this can take a while.
scan_purelang: path: '/Users/oscarbranson/UCDrive/Projects/APT/MassSpectrum/APT_MS_autorange.py' lang: Python
Python Syntax Error in '/Users/oscarbranson/UCDrive/Projects/APT/MassSpectrum/APT_MS_autorange.py': invalid syntax (<unknown>, line 9)
Doing CodeIntel for 'Python' (hold on)...
eval 'plt' at APT_MS_autorange.py#9  <Trigger 'python-complete-object-members' at 168 (explicit)>
start scope is (<Element 'scope' at 0x1066bdf50>, [])
find 'plt ...' starting at (<Element 'scope' at 0x1066bdf50>, []):
is blob 'matplotlib.pyplot' from <Python curdirlib>? no
is blob 'matplotlib.pyplot' from <Python extradirslib>? yes
imports:: setting reldirlib to: '/Library/Python/2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.9-intel.egg/matplotlib'
is 'plt' accessible on (<Element 'scope' at 0x1066bdf50>, [])? yes: <Element 'scope' at 0x1066aa7d0>
'plt' is <Element 'scope' at 0x1066aa7d0> on (<Element 'scope' at 0x1066aa7d0>, [])
is blob '__future__' from <Python reldirlib>? no
is blob '__future__' from <Python curdirlib>? no
is blob '__future__' from <Python extradirslib>? no
is blob '__future__' from <Python envlib>? no
is blob '__future__' from <Python sitelib>? no
is blob '__future__' from <Python cataloglib: PyWin32>? no
is blob '__future__' from <python-2.7 stdlib>? yes
#... big list here ...

done eval: success
Done 'Python' CodeIntel! Full CodeIntel took 10ms

Autocomplete called (Python) [calltips]
Updating indexes for 'Python'... The first time this can take a while.
scan_purelang: path: '/Users/oscarbranson/UCDrive/Projects/APT/MassSpectrum/APT_MS_autorange.py' lang: Python
Python Syntax Error in '/Users/oscarbranson/UCDrive/Projects/APT/MassSpectrum/APT_MS_autorange.py': invalid syntax (<unknown>, line 11)
Doing CodeIntel for 'Python' (hold on)...
eval 'pd' at APT_MS_autorange.py#27  <Trigger 'python-complete-object-members' at 500 (explicit)>
start scope is (<Element 'scope' at 0x107050de8>, [])
find 'pd ...' starting at (<Element 'scope' at 0x107050de8>, []):
is blob 'pandas' from <Python curdirlib>? no
is blob 'pandas' from <Python extradirslib>? yes
scan_purelang: path: '/usr/local/Cellar/python/2.7.8/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/compat/__init__.py' lang: Python
# ... big list here ...
done eval: success
Done 'Python' CodeIntel! Full CodeIntel took 411ms

【问题讨论】:

    标签: python autocomplete pandas sublimetext3 sublimecodeintel


    【解决方案1】:

    我曾经推荐过 SublimeCodeIntel,尽管有这样的随机打嗝,直到我发现 Anaconda。一旦你设置了它(一个非常简短的过程),它就可以工作了。没有要初始化或损坏的数据库,它会自动发现您何时添加了新包,它在后台运行非常不显眼......我不能说太多关于它的好东西。它使用 JEDI 自动完成模块等,并且快速准确。它自动确定类型变量是什么,并用可以在其上调用的适当方法和类填充完成。你也可以让它完成参数完成,但这对我来说有点烦人,所以我把它关掉了。它不能做的一件事是方法链接,但没有什么是完美的。它还包括用于代码复杂性检查和 linting 的模块,这很好,但我不需要它,并且只想在我想要 lint 时进行 lint,所以我也将其关闭。

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

    顺便说一句,我不是开发者,和他/她没有任何关系:)

    【讨论】:

    • 感谢您的提示。 Anaconda 看起来很棒,但是缺少方法链接真的很烦人……我经常使用 pandas 数据框和多面板图。这意味着自动完成在我的 Axes 对象的 Dataframe 大约 1/3 的时间里不起作用......有什么建议吗?
    • @user3851407 不是真的。自动完成对变量很好,因为(我假设)Anaconda 会跟踪它的类型并自动完成相关的类/方法。自动完成链式方法的问题是您必须评估每个方法,确定输出,找到它的类型,然后自动完成相应的项目。对于大型 DF、numpy 数组等,这可能需要相当长的时间,尤其是对于复杂的转换。
    • 感谢您的澄清。我想我误解了“方法链接”的意思是“使用变量”。我认为 Anaconda 没有使用我的变量,但事实证明自动完成只是真的很慢(我输入后 2-5 秒)。这是正常的(i7 macbook pro 视网膜)吗?我认为不是......如果没有,关于如何加快速度的任何想法?谷歌被证明是徒劳的。
    • @user3851407 这很奇怪,自动完成对我来说几乎是即时的,无论是在几年前的 i7 iMac 上,还是在工作中的双核 i5 Win8 笔记本电脑上。你的文件很大吗?另外,您是否在点 . 上设置了自动完成功能?在您的用户首选项中,设置 "autocomplete_triggers": [{"characters": ".", "selector": "source"}](或 source.python,如果您愿意),每次您输入一个点(句点、句号等)时都会出现自动完成菜单。
    • 是的 - 得到了“。”触发器设置,但是当我输入一个“。”我从整个文档中获得了一个自动完成单词的列表,然后在 2-5 秒后 Anaconda 自动完成功能启动,我得到了我期待的 python 完成。诡异的!想知道我做错了什么......
    猜你喜欢
    • 2014-04-06
    • 2013-04-02
    • 2022-08-15
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多