如何在Jupyter Notebook中修复“socket协议类型错误”的问题

3

我已经在Windows 7 Professional 64位处理器上安装了带有Python 3.x的Anaconda3。 在用Python 3内核打开新的Jupyter笔记本时,出现以下错误消息:

"Assertion failed: protocol wrong type for socket [10041] c:\ci\zeromq_1549025594292\work\src\ip.cpp:417"

然后Python停止运行。 请帮忙解决此问题。

谢谢, Geetha S

期望能够打开新的笔记本进行编程。


遇到了同样的问题。你解决这个问题了吗? - Pherdindy
3个回答

1

最终我使用了两种替代方法来解决这个问题:

  1. 前往代码库存档,从2018年11月的版本(这是带有Python 3.7的最早版本)中下载 anaconda3 5.3.1。通过匹配pythonjupyter等版本,解决了我的问题。[另外,如果您使用存档下载旧版本,则以下链接将告诉您运行该特定版本anaconda的python版本link]

  2. 一种解决方法是下载您可以找到的最新版本,并根据上述说明创建一个新环境,其中包括python 3.53.6。操作步骤如下:

-在anaconda提示符中键入以下内容之一:

"conda create -n py35 python=3.5 anaconda" 或者

"conda create -n py36 python=3.6 anaconda".

这可能需要一些时间,但最终您将被要求输入类似以下的内容:

"conda activate py36" 以激活新环境。

为确保已激活,请键入:

"conda info --envs"。

在显示的环境列表中,活动环境将用星号(*)突出显示。这应该可以工作,但为了安全起见,请转到Anaconda Navigator,然后在左侧选择环境。单击"播放按钮""使用Jupyter Notebook打开"

1
我也遇到了同样的问题(也在Windows 7上),并设法使它正常工作。由于这里的答案似乎相当不具体,所以我想记录我所采取的步骤。

本质上,我没有弄清楚出了什么问题,但我只是尝试了不同的版本直到它能够工作。我的基线miniconda3是64位的,但我认为这并不重要,因为我创建了第二个非基础环境来运行。无论如何,我的miniconda3安装程序是

Miniconda3-latest-Windows-x86_64.exe 2020-03-11 10:38:26    20d6bd9b3bd62f1fd874315b6b38c159

此外,其他答案建议安装Anaconda,但这需要很长时间和大量磁盘空间。我只使用了Miniconda,它更小、安装速度更快,而且您可以在需要时下载相同的软件包。
我的步骤如下:
1. 创建新的Python 3.6环境 2. 在新环境中安装Jupyter 3. 降级环境中的Zeromq版本。 4. 我还安装了NumPy,因为我需要用到它来运行Notebooks。
以下是我使用的命令:
conda create --name python36 python=3.6
conda activate python36
conda install zeromq=4.2.2
conda install numpy

以下是我最终使用的软件包版本(我省略了一些我认为不重要的):

ipykernel                 5.1.4            py36h39e3cac_0
ipython                   7.13.0           py36h5ca1d4c_0
ipython_genutils          0.2.0                    py36_0
ipywidgets                7.5.1                      py_0
jupyter                   1.0.0                    py36_7
jupyter_client            6.1.3                      py_0
jupyter_console           6.1.0                      py_0
jupyter_core              4.6.3                    py36_0
libsodium                 1.0.16               h9d3ae62_0
matplotlib                3.1.3                    py36_0
matplotlib-base           3.1.3            py36h64f37c6_0
mkl                       2020.1                      216
mkl-service               2.3.0            py36hb782905_0
mkl_fft                   1.0.15           py36h14836fe_0
mkl_random                1.1.1            py36h47e9c7a_0
msys2-conda-epoch         20160418                      1
notebook                  6.0.3                    py36_0
numpy                     1.18.1           py36h93ca92e_0
numpy-base                1.18.1           py36hc3f5095_1
prompt-toolkit            3.0.5                      py_0
prompt_toolkit            3.0.5                         0
python                    3.6.10               h9f7ef89_2
python-dateutil           2.8.1                      py_0
pywin32                   227              py36he774522_1
pywinpty                  0.5.7                    py36_0
pyzmq                     17.0.0           py36hfa6e2cd_0
qt                        5.9.7            vc14h73c81de_0
sqlite                    3.31.1               h2a8f88b_1
terminado                 0.8.3                    py36_0
testpath                  0.4.4                      py_0
tornado                   6.0.4            py36he774522_1
winpty                    0.4.3                         4
zeromq                    4.2.2                h7a7be3a_2

为了启动jupyter,我创建了一个 .bat 文件:

set conda_root=C:\Users\username\miniconda3
set work_root=D:\projects\EdX

d:
cd %work_root%

call %conda_root%\Scripts\activate.bat python36

call jupyter notebook

echo Jupyter server stopped

pause

work_root文件夹是我的.ipynb文件所在的位置。) pause命令用于保持cmd.exe窗口打开,以便您可以阅读jupyter记录的任何消息或错误,但是每次停止服务器时都必须手动关闭窗口。
我在Anaconda Prompt cmd.exe窗口中收到了一条弃用警告:
C:\Users\username\miniconda3\envs\python36\lib\site-packages\notebook\services\kernels\kernelmanager.py:19: 
    VisibleDeprecationWarning: zmq.eventloop.minitornado is deprecated in pyzmq 14.0 and will be removed.
    Install tornado itself to use zmq with the tornado IOLoop.

但此时此刻我并不在乎。


0

我想我的答案可能有点晚了 这个错误是因为你电脑上安装的Python版本比Jupyter Notebook里的版本要旧 要解决这个问题,你可以通过conda命令降级你的版本或者 创建一个新的环境:
conda create -n py35 python=3.5 anaconda
记得把版本改成你自己的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接