常见病

除了常规故障排除步骤之外,一些经常报告的问题还需要更专业的解决方案。

启动内核时出错

如果您收到消息 An error occurred while starting the kernelIPython控制台 ,Spyder无法在当前工作环境中启动新的Python解释器来运行您的代码。可能导致这种情况的问题有很多,但大多数问题都可以通过几个简单的步骤很快解决。

Spyder-内核未安装/不兼容

Spyder需要受支持版本的 spyder-kernels 要显示在要在其中运行控制台的工作环境中的软件包。

Kernel version error dialog

默认情况下,它包含在Anaconda中,但是如果您想要在另一个Python环境或安装中运行您的代码,您需要确保它已经安装并更新到最新版本。

在下表中检查您的Spyder版本所需的Spyder-kernel版本:

Spyder和Spyder-Kernels版本兼容性

斯派德

Spyder-内核

4.0.0-4.0.1

1.8.1

4.1.0-4.1.2

1.9.0

4.1.3

1.9.1

4.1.4

1.9.3

4.1.5-4.1.6

1.9.4

4.2.0

1.10.0

5.0.0-5.0.5

2.0.5

5.1.0-5.1.5

2.1.1

为此,请激活环境,然后安装 spyder-kernels 。如果使用Anaconda,请打开一个终端(Windows上的Anaconda提示符)并运行:

conda activate ENVIRONEMENT-NAME
conda install spyder-kernels=<VERSION>

否则,请以您创建的任何方式激活您的环境,并执行:

pip install spyder-kernels==<VERSION>

对于前面的两个命令,请替换 <VERSION> 表中有相应的版本。

与另一个依赖关系有关的问题

如果内核显示一个很长的错误回溯,其中提到了其他包,如 ipythonipykerneljupyter_clienttraitletspyzmq ,则问题可能是依赖项软件包的版本过期或不兼容。要解决此问题,请激活环境并更新关键依赖项。

在 Python 环境中:

conda activate ENVIRONMENT-NAME
conda update spyder-kernels ipython ipykernel jupyter_client jupyter_core pyzmq traitlets

否则,请以您创建的任何方式激活您的环境,然后运行:

pip install -U spyder-kernels ipython ipykernel jupyter_client jupyter_core pyzmq traitlets

AttributeError/ImportError

检查错误消息的最后几行,看看它是否 AttributeErrorImportError ,或者是指您在当前工作目录或主文件夹中创建的文件 (C:/Users/YOUR_USERNAME 在Windows上, /Users/YOUR_USERNAME 在MacOS上,或 /home/YOUR_USERNAME 在Linux上)。

Spyder's AtributeError dialog

如果是这样,错误很可能是因为您的文件与Python标准库模块同名,例如 string.pytime.py ,它覆盖Spyder-Kernels试图加载的内置模块。要解决此问题,只需将您的文件重命名为不同于这些名称之一的名称,然后尝试重新启动内核。要检查这些模块的名称,请参阅 Python standard library documentation

完成/帮助不起作用

为了在编辑器中提供代码完成、帮助和实时分析,Spyder使用Python Language Server(PIRS),这是VSCode、Atom和其他流行的编辑器/IDE使用的语言服务器协议规范的实现。大多数帮助和完成问题都不在Spyder的控制范围之内,要么是Pyls的限制,要么是正在自省的代码,但有些是可以解决的。

对象缺少文档字符串

如果调用提示、悬停提示或帮助窗格中没有显示任何内容,则您尝试自省的对象可能没有文档字符串。

Docstring not found in help pane

在这种情况下,唯一的解决方案是在原始函数、方法或类的源代码中添加一个。

找不到对象

有些对象,无论是由于使用C、Cython或其他语言编写的、在运行时动态生成的,还是作为您创建的对象的方法,如果不执行代码,都很难找到。

Object not found in help pane

但是,一旦您在 IPython控制台 ,您也许可以在那里获得有关该对象的帮助和完成信息。

LSP已停止工作

偶尔,特别是在使用Spyder一段时间后,代码完成、帮助和分析可能会停止工作。如果是这种情况,您可以使用 LSP Python 在屏幕底部的Spyder状态栏中选择该项目,然后通过右键单击该项目并选择 Restart Python Language Server 项目。

Spyder with LSP restart dialog

Spyder错误/依赖性问题

考虑到使LSP工作所涉及的各种依赖项,环境中不兼容或过期的版本可能会导致错误消息、不完整的结果或帮助/分析根本不起作用。

要解决此问题,请首先尝试更新 Python 和Spyder,如中所述 基本急救 。如果问题仍未解决,请使用以下命令更新各种相关依赖项:

conda update python-language-server

插件问题

插件完全不起作用

如果您已经安装了Spyder插件,但您看不到它,请转到 Panes 的子菜单 View 菜单并选择插件的名称,这将使其窗格可见。如果您在那里没有看到插件,请选择 Dependencies 项下的项目 Help 菜单,查看插件是否出现在底部。

Dependencies dialog showing Unittest plugin

如果有问题的插件没有在依赖项对话框中列出,请检查您是否将其安装在与Spyder相同的环境中。如果您有,那么问题很可能是由依赖性问题引起的。测试是否可以手动导入插件,方法是在与Spyder相同的环境中打开Python控制台并键入,例如, import spyder_unittest 测试Spyder-Unittest`插件;此命令运行时应该没有错误。

如果这些都不能帮助您解决问题,请继续下一节。

其他问题

如果您收到一个提到或涉及Spyder插件的错误,例如 spyder-unittestspyder-terminalspyder-notebook ,或者如果您遇到Spyder插件的任何其他问题,那么第一个方法应该是将Spyder和插件更新到它们的最新版本。

如果这不能解决问题,您应该检查插件的网站或存储库,看看它是否与您的Spyder版本兼容。

最后,如果兼容性似乎不是问题,请检查这些存储库,看看问题是否已经打开,如果没有,请在那里报告。