IPython spyder 中的控制台在 Anaconda 中极其缓慢
IPython console in spyder extremely slow in Anaconda
在使用标准 python installation/IDLE 几年后,我正在尝试 Anaconda/Spyder。在每个工作会话期间,控制台(和变量资源管理器)会随着我 运行 的每个脚本和交互式命令而逐渐变慢。最终需要几分钟才能得到对打印等简单命令的响应,然后它完全停止响应,我将其关闭。这对我的工作非常具有破坏性。
Mac OSX 10.13.6
conda version : 4.5.11
conda-build version : 3.15.1
python version : 3.7.0.final.0
qt 5.9.6
spyder 3.3.1
ipython 7.1.1
我确实经常使用 matplotlib。只要有可能,我就会在脚本的开头使用 plt.ioff() 在结尾处使用 and/or plt.close('all') 。在首选项中完全关闭 matplotlib 支持无济于事,而且它也不是永久性修复。 Python 没有使用我所有 CPU 或 RAM 附近的任何地方。
所以这不是一个完全令人满意的解决方案,但它似乎是一个合理的临时解决方案。如果您将 spyder 版本降级到 3.1.X,您将能够使用 python 控制台而不是 Ipython 控制台,这似乎对我有用。为此,只需 运行:
conda install spyder=3.1
在您选择的环境处于活动状态时在终端中。这并不理想,因为开发人员出于此问题 中提到的特定原因删除了 python 控制台。
此外,降级这么多可能会对您的代码使用的其他包产生不可预见的影响,并可能导致其他问题,但到目前为止,这是我能够提出的唯一解决方案。
@JJR4 的回答对我不起作用(似乎对其他人有用)。另一个解决方法是在 IPython Spyder 控制台中键入 %connect_info
魔术命令,它将显示 JSON 信息以将另一个控制台连接到内核。
魔术命令的输出解释了如何连接,但基本上只有三个选项。
将上面的JSON粘贴到一个文件中,并连接到:
$> jupyter <app> --existing <file>
或者,如果您在本地,您可以只连接:
$> jupyter <app> --existing <kernel>.json
甚至只是:
$> jupyter <app> --existing
如果这是您启动的最新 Jupyter 内核。
我通常使用 qtconsole 作为应用程序。在命令行中输入您选择的连接方法后,将打开一个新控制台,该控制台连接到与 Spyder 中的控制台相同的内核。出于某种原因,即使 Spyder 控制台有延迟,新控制台也不会延迟。
在新控制台中输入所有内容,甚至 runfile()
希望对您有所帮助!
更新:
降级到 ipykernel 版本 4.10 似乎可以解决我的问题。感谢 Carlos Cordoba - 请参阅下面 link 中的 GitHub 对话。
据我所知,问题似乎出在 ipython 内核的最新主要版本上。将 ipykernel 的版本固定到 4.10.0 为我解决了这个问题。为此,将包含 ipykernel 4.*
的行添加到文件 ~/anaconda3/conda-meta/pinned
。如果文件尚不存在,请创建该文件。然后 conda update ipykernel
实际上会降级到 4.10.0。对我有用!
你不需要降级整个spyder。
对我来说,它可以降级这两个:
conda install ipython=6.4.0
conda install ipykernel=4.10.0
@Sjoerd 感谢您的回答,这对我有用。更清楚地说,这是我在 High Sierra 的 Anaconda 3 终端上所做的:
echo "ipykernel 4.10.0" >> ~/anaconda3/conda-meta/pinned
conda update anaconda
当我尝试只更新 ipykernel 时,我会遇到依赖项错误。通过更新 anaconda,现在一切都是最新的,但 ipykernel 的有效版本是 4.10.0。从那以后我没有遇到任何挂起。
在使用标准 python installation/IDLE 几年后,我正在尝试 Anaconda/Spyder。在每个工作会话期间,控制台(和变量资源管理器)会随着我 运行 的每个脚本和交互式命令而逐渐变慢。最终需要几分钟才能得到对打印等简单命令的响应,然后它完全停止响应,我将其关闭。这对我的工作非常具有破坏性。
Mac OSX 10.13.6
conda version : 4.5.11
conda-build version : 3.15.1
python version : 3.7.0.final.0
qt 5.9.6
spyder 3.3.1
ipython 7.1.1
我确实经常使用 matplotlib。只要有可能,我就会在脚本的开头使用 plt.ioff() 在结尾处使用 and/or plt.close('all') 。在首选项中完全关闭 matplotlib 支持无济于事,而且它也不是永久性修复。 Python 没有使用我所有 CPU 或 RAM 附近的任何地方。
所以这不是一个完全令人满意的解决方案,但它似乎是一个合理的临时解决方案。如果您将 spyder 版本降级到 3.1.X,您将能够使用 python 控制台而不是 Ipython 控制台,这似乎对我有用。为此,只需 运行:
conda install spyder=3.1
在您选择的环境处于活动状态时在终端中。这并不理想,因为开发人员出于此问题
@JJR4 的回答对我不起作用(似乎对其他人有用)。另一个解决方法是在 IPython Spyder 控制台中键入 %connect_info
魔术命令,它将显示 JSON 信息以将另一个控制台连接到内核。
魔术命令的输出解释了如何连接,但基本上只有三个选项。
将上面的JSON粘贴到一个文件中,并连接到:
$> jupyter <app> --existing <file>
或者,如果您在本地,您可以只连接:
$> jupyter <app> --existing <kernel>.json
甚至只是:
$> jupyter <app> --existing
如果这是您启动的最新 Jupyter 内核。
我通常使用 qtconsole 作为应用程序。在命令行中输入您选择的连接方法后,将打开一个新控制台,该控制台连接到与 Spyder 中的控制台相同的内核。出于某种原因,即使 Spyder 控制台有延迟,新控制台也不会延迟。
在新控制台中输入所有内容,甚至 runfile()
希望对您有所帮助!
更新: 降级到 ipykernel 版本 4.10 似乎可以解决我的问题。感谢 Carlos Cordoba - 请参阅下面 link 中的 GitHub 对话。
据我所知,问题似乎出在 ipython 内核的最新主要版本上。将 ipykernel 的版本固定到 4.10.0 为我解决了这个问题。为此,将包含 ipykernel 4.*
的行添加到文件 ~/anaconda3/conda-meta/pinned
。如果文件尚不存在,请创建该文件。然后 conda update ipykernel
实际上会降级到 4.10.0。对我有用!
你不需要降级整个spyder。
对我来说,它可以降级这两个:
conda install ipython=6.4.0
conda install ipykernel=4.10.0
@Sjoerd 感谢您的回答,这对我有用。更清楚地说,这是我在 High Sierra 的 Anaconda 3 终端上所做的:
echo "ipykernel 4.10.0" >> ~/anaconda3/conda-meta/pinned
conda update anaconda
当我尝试只更新 ipykernel 时,我会遇到依赖项错误。通过更新 anaconda,现在一切都是最新的,但 ipykernel 的有效版本是 4.10.0。从那以后我没有遇到任何挂起。