除了一般的故障排除步骤外,一些经常报告的问题还需要更专业的解决方案。
如果你收到消息 An error occurred while starting the kernel 在 IPython控制台 ,Spyder无法在当前工作环境中启动新的Python解释器来运行代码。有许多问题可能会导致这种情况,但大多数问题都可以通过简单的步骤快速修复。
An error occurred while starting the kernel
Spyder需要受支持的 spyder-kernels 要在其中运行控制台的工作环境中存在的包。
spyder-kernels
默认情况下,Anaconda包含了它,但是如果您想在另一个Python环境或安装中运行代码,则需要确保它已安装并更新到最新版本。
在下表中检查您的spyder版本所需的spyder内核版本:
斯派德
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
为此,请激活环境,然后安装 spyder-kernels . 如果使用Anaconda,请打开一个终端(Windows上的Anaconda提示符)并运行:
conda activate ENVIRONEMENT-NAME conda install spyder-kernels=<VERSION>
否则,请使用您创建的任何方法激活您的环境,并执行:
pip install spyder-kernels==<VERSION>
对于前面的两个命令,请替换 <VERSION> 表中相应的版本。
<VERSION>
如果内核显示一个长错误回溯,其中提到其他包,比如 ipython , ipykernel , jupyter_client , traitlets 或 pyzmq ,问题可能是依赖项包的过期或版本不兼容。要解决此问题,请激活环境并更新关键依赖项。
ipython
ipykernel
jupyter_client
traitlets
pyzmq
在水蟒环境中:
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 ,或引用在当前工作目录或主文件夹中创建的文件 (C:/Users/YOUR_USERNAME 在Windows上, /Users/YOUR_USERNAME 在macOS上,或 /home/YOUR_USERNAME 在Linux上)。
AttributeError
ImportError
C:/Users/YOUR_USERNAME
/Users/YOUR_USERNAME
/home/YOUR_USERNAME
如果是这样,那么错误很可能是由于文件的名称与Python标准库模块的名称相同,例如 string.py 或 time.py ,它重写Spyder Kernels尝试加载的内置模块。要解决这个问题,只需将文件重命名为其他名称,然后尝试重新启动内核。要检查这些模块的名称,请参阅中的列表 Python standard library documentation .
string.py
time.py
为了在编辑器中提供代码完成、帮助和实时分析,Spyder使用Python语言服务器(PyLS),这是VSCode、Atom和其他流行编辑器/IDE使用的语言服务器协议规范的实现。大多数帮助和完成问题都不在Spyder的控制范围之内,要么是PyLS的局限性,要么是被内省的代码,但有些问题是可以解决的。
如果在调用提示、悬停提示或帮助窗格中没有显示任何内容,则您尝试自省的对象可能没有docstring。
在这种情况下,唯一的解决方案是在原始函数、方法或类的源代码中添加一个。
有些对象,不管是用C、Cython或其他语言编写的;在运行时动态生成的;或者是您创建的对象的一个方法,如果不执行代码,就很难找到这些对象。
但是,一旦您在 IPython控制台 ,您可以在那里获得有关该对象的帮助和完成。
偶尔,尤其是在使用Spyder一段时间后,代码完成、帮助和分析可能会停止工作。如果是这种情况,可以使用 LSP Python 在屏幕底部的Spyder状态栏中,单击鼠标右键并选择 Restart Python Language Server 项目。
考虑到使LSP工作所涉及的各种依赖关系,环境中不兼容或过期的版本可能会导致错误消息、不完整的结果或帮助/分析根本不起作用。
要解决此问题,请首先尝试更新Anaconda和Spyder,如中所述 基本急救 . 如果问题仍未解决,请使用以下内容更新各种相关依赖项:
conda update python-language-server
如果您安装了Spyder插件,但看不到,请转到 Panes 的子菜单 View 菜单并选择插件的名称,这将使其窗格可见。如果没有看到插件,请选择 Dependencies 项目 Help 菜单,查看插件是否出现在底部。
如果存在问题的插件未在“依赖项”对话框中列出,请检查是否将其安装在与Spyder相同的环境中。如果有,那么问题很可能是由依赖性问题引起的。测试您是否可以手动导入插件,方法是在与Spyder相同的环境中打开Python控制台并键入,例如, import spyder_unittest 要测试Spyder Unittest`插件,此命令应运行正常。
import spyder_unittest
如果这些都不能帮助您解决问题,请继续下一节。
如果您遇到一个错误,其中提到或涉及Spyder插件,例如 spyder-unittest , spyder-terminal 或 spyder-notebook ,或者如果您在使用Spyder插件时遇到任何其他问题,那么第一种方法应该是将Spyder和插件更新到最新版本。
spyder-unittest
spyder-terminal
spyder-notebook
如果这不能解决问题,您应该检查插件的网站或存储库,看看它是否与您的Spyder版本兼容。
最后,如果兼容性似乎不是问题所在,请检查这些存储库以查看是否已打开问题,如果没有,请在那里报告。