V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sylv
V2EX  ›  Sublime Text

修复在 ST3 下 SublimeCodeIntel 对 Python 无法自动补全 import 语句里的模块名的问题

  •  
  •   Sylv · 2015-02-13 17:39:48 +08:00 · 9496 次点击
    这是一个创建于 3598 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Before:
    Before

    After:
    After


    修复方法:

    下载修改过的 Completion Rules.tmPreferences,放到 .../Sublime Text 3/Packages/Python 中。

    可能需要删除文件夹 .../Sublime Text 3/Cache 和文件 .../Sublime Text 3/Local/Session.sublime_session,并重启 Sublime Text 后才能生效。


    修复方法来源:https://github.com/srusskih/SublimeJEDI/issues/150

    10 条回复    2018-05-20 20:13:48 +08:00
    XiiLii
        1
    XiiLii  
       2018-05-15 11:16:37 +08:00
    没太看明白,我用的是便携版无需安装的 ST3,请问下载的文件名就叫 “ Completion Rules.tmPreferences ” 吗?这个路径下全是文件 “ Sublime Text 3/Packages ” 放这里也不行,能详细点吗?
    Sylv
        2
    Sylv  
    OP
       2018-05-15 12:07:18 +08:00
    @XiiLii
    Sublime Text 菜单里点击 Preferences -> Browse Packages,打开的目录就是 .../Sublime Text 3/Packages/,在此目录下若没有 Python 文件夹就新建一个,把下载的修改版 Completion Rules.tmPreferences (就叫这个名字)文件放到这个 Python 文件夹里。然后可能要删除文件夹 .../Sublime Text 3/Cache 和文件 .../Sublime Text 3/Local/Session.sublime_session 并重启后才会生效。
    XiiLii
        3
    XiiLii  
       2018-05-20 00:13:26 +08:00
    @Sylv 非常感谢,可以了,补充下,我放在 “\Sublime Text Build 3170 x64\Data\Packages\Python ” 目录下,然后重启就可以了,没有清理缓存目录。
    可能我用的是便携版的原因,和你说的路径不太一样,不过也有这个目录 ‘\Sublime Text Build 3170 x64\Packages ’ ,之前放这里不行,但看到你说从 ” Preferences -> Browse Packages “ 这里进去我就猜应该是在 “\Sublime Text Build 3170 x64\Data\Packages\“ 下新建 ” Python “ 目录。果然就可以了。还是谢谢你的提醒
    XiiLii
        4
    XiiLii  
       2018-05-20 01:12:40 +08:00
    又出现了一个问题,比如想使用 requests 对象的方法时,没有提示方法的关键词:如 requests.get() 这又是怎么解决呢?
    先说下:我以为是没清理你说的文件的问题,但我清理之后重启还是没有提示对象的方法名称
    Sylv
        5
    Sylv  
    OP
       2018-05-20 02:05:31 +08:00
    @XiiLii
    SublimeCodeIntel 得依赖另外安装的 CodeIntel 来索引第三方包,但是出于某些原因 CodeIntel 经常会索引出错,于是 SublimeCodeIntel 自动补全就无法正常工作了。你可以试下让 CodeIntel 重新生成索引:
    https://github.com/SublimeCodeIntel/SublimeCodeIntel#regenerate-index

    因为这个原因,我是已经放弃折腾 SublimeCodeIntel,改用 Anaconda 了:
    http://damnwidget.github.io/anaconda/
    XiiLii
        6
    XiiLii  
       2018-05-20 09:35:16 +08:00
    @Sylv anaconda 还真的可以用,不过还是会出现无法导入第三方库的问题,我用了上面同样的方法也可以同样解决,不过它会提示这样一个错误 “ error loading mete info from Packages/Python/Completion Rules.tmPreferences: Error parsing plist xml: expected = in file Packages/Python/Completion Rules.tmPreferences on line 43 ” ,虽然不影响使用,关掉错误提示就可以,但每次都要手动关掉很麻烦,你有遇到这样的问题吗?你怎么解决的?
    Sylv
        7
    Sylv  
    OP
       2018-05-20 14:38:21 +08:00
    @XiiLii
    我没遇到这个问题,看错误提示 Packages/Python/Completion Rules.tmPreferences 文件的第 43 行有语法错误,你检查下这个文件是不是有问题,按道理来说这个修改版的 Completion Rules.tmPreferences 文件应该只有 20 行,你是不是自己之前有修改过?
    XiiLii
        8
    XiiLii  
       2018-05-20 15:42:46 +08:00
    原来如此,我直接下载了 https://github.com/srusskih/SublimeJEDI/blob/master/Completion%20Rules.tmPreferences 这个页面的源代码( 71k 大小)。现在应该不再弹出提示了。
    想问下 anaconda 是不是有个 bug 会导致很多代码被一条条白框框住?除非光标在编辑状态才消失?
    Sylv
        9
    Sylv  
    OP
       2018-05-20 16:01:35 +08:00 via iPhone   ❤️ 1
    @XiiLii 这个不是 bug,是 Anaconda 的代码检查功能,被框住的代码是有语法错误或者是不符合 PEP8 规范,不需要的话可以在设置文件里禁用这个功能:
    http://damnwidget.github.io/anaconda/IDE/#disabling-the-linter
    XiiLii
        10
    XiiLii  
       2018-05-20 20:13:48 +08:00
    没想到 Anaconda 还有代码检查功能,刚刚配置好了,非常感谢你的提醒
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1068 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:12 · PVG 03:12 · LAX 11:12 · JFK 14:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.