我已经在Sublime Text Build 4126中安装了Anaconda
插件,但它无法运行其自动完成功能。我不知道为什么。蟒蛇的棉绒确实有效。
蟒蛇版本:3.10
你能帮忙检测和解决问题吗?
注意:
自从我写了这个答案以来,Anaconda 已经更新以解决问题。如果您还没有,只需将您的 Anaconda 安装更新到 v2.3.0 或更高版本即可。
Anaconda
插件附带了其他几个捆绑的Python库,包括jedi
(用于自动完成),autopep8
用于代码格式化等。这些库是Anaconda
插件本身的一部分,不会作为包控制依赖项安装,因此除非插件的作者 DamnWidget 手动更新它们,否则它们的版本不会更改。然而,正如他们在最近的评论中所解释的那样,他们已经有一段时间没有使用Python或Sublime Text了,并且正在维护该插件仅仅是因为它在社区中很受欢迎,并且没有其他人站出来维护它。
其中一个包含的库是parso
,它使用特定于正在使用的Python版本的语法文件解析Python源代码。这个插件恰好是导致您的问题的错误所在。第一个问题是parso
的包含版本,上次更新于 2020 年 5 月,没有适用于 Python 3.10(或更高版本)的语法文件。(3.9 的语法文件也与 3.8 的语法文件完全相同,但我们也会修复它。第二个问题是,即使包含 3.10 语法文件,parso
源(因此Anaconda
)也无法读取它,因此您不会自动完成。
我们需要遵循几个步骤来解决这两个问题。
-
通过单击打开您的崇高文本
Packages
文件夹Preferences → Browse Packages…
.根据您的操作系统以及您是否安装了 ST4 全新版还是从 ST3 升级版,此文件夹将位于不同的位置:- Linux:
~/.config/sublime-text-3/Packages
或~/.config/sublime-text/Packages
- macOS/OS X:
~/Library/Application Support/Sublime Text 3/Packages
或~/Library/Application Support/Sublime Text/Packages
- Windows 常规安装:
C:UsersYourUserNameAppDataRoamingSublime Text 3Packages
或C:UsersYourUserNameAppDataRoamingSublime TextPackages
- Windows Portable 安装:
InstallationFolderSublime Text 3DataPackages
或InstallationFolderSublime TextDataPackages
- Linux:
-
打开命令提示符、Powershell 或终端,然后导航到临时目录,例如 Windows 上的
C:Temp
或 macOS 或 Linux 上的/tmp
。 -
输入:
git clone https://github.com/davidhalter/parso.git
或者,如果您使用单独的源代码管理 GUI 程序,请使用它将该存储库克隆到某个地方,例如我提到的某个临时目录。
-
输入刚刚创建的
parso
目录,然后进入parso/python
目录。您将看到在文件中有grammarXX[X].txt
文件,其中XX[X]
从36
开始,一直到312
。在操作系统的文件资源管理器应用程序中打开此文件夹,以便更轻松地复制和粘贴。选择所有语法文件并复制它们。 -
回到我们之前打开的
Packages
窗口,导航到Anaconda/anaconda_lib/parso/python
.将复制的语法文件粘贴到此处。您将覆盖其中一些,但这没关系 - 我们想要这样做。这将解决您遇到的第一个问题。 -
向上导航一个级别,以便您的文件资源管理器位置现在
Packages/Anaconda/anaconda_lib/parso
。在Sublime中打开名为utils.py
的文件,然后向下导航到第123行。它应该看起来像这样:match = re.match(r'(d+)(?:.(d)(?:.d+)?)?$', version)
我们将只添加一个字符。将原始行替换为以下内容(确保它缩进了 4 个空格):
match = re.match(r'(d+)(?:.(d+)(?:.d+)?)?$', version) # ^ added this
保存文件,您就完成了!重新启动Sublime Text,Anaconda自动完成功能现在应该适用于3.10及更高版本!
请记住,下次升级 Anaconda 时,您的更改将被覆盖,但希望下次发生这种情况时,新版本将修复这些错误。