0


jupyter和pyzmq之间的一些个奇葩坑

文章目录

导读

估计不少人和我遇到了同样的问题,

jupyter-client

pyzmq

两个永远不在同一个星球的家伙。这次将解决方法记下来,免得以后遇到了还是得重新找解决方案。

发现问题

如果全都是安装最新版,那么

jupyter-client

pyzmq

永远都能保持一致,因为互相都是依赖最新的内容,互相都在进步。

可问题是,我目前需要安装的是

paddle2.0

。整理其中的依赖,会发现有这些东西:
名称版本Jinja23.1.2MarkupSafe2.1.1absl-py1.1.0click8.1.3cloudpickle1.6.0flask2.1.2flask-cors3.0.10grpcio1.47.0importlib-metadata4.12.0itsdangerous2.1.2markdown3.3.7parl2.0.4psutil5.9.1pyzmq18.1.1scipy1.7.3tb-nightly1.15.0a20190801tensorboardX1.8termcolor1.1.0typing-extensions4.3.0werkzeug2.1.2zipp3.8.0
其中,我们可以看到,

pyzmq

的版本是

    18.1.1
   
  
  
   18.1.1
  
 
18.1.1。而
jupyterlab

    3.2.9
   
  
  
   3.2.9
  
 
3.2.9版本中,
pyzmq

的版本是

    23.2.0
   
  
  
   23.2.0
  
 
23.2.0,两者差得不是一点半点。

那么问题要怎么解决呢?

可惜的是,目前找遍全网并没有说明一个可行的版本规则,于是只能回去查询GitHub中的源码看有没有提示。

GitHub版本回溯查询

一番查询,找到了jupyter的官方代码库。

想起来之前在使用Git提交代码的时候,能够通过

tag

参数说明当前提交的库处于什么版本,知名度稍微高一点的多人协作框架都会有这样的规定。然后就想到可以通过

tag

查询历年版本。

怎么查询呢?我们先看到官方库的首页,这里有显示当前分支是主分支的

main

,看到了吗?就在左上方。

在这里插入图片描述
点开他,就会发现列出了很多内容。你会看到其实有两个选项卡,一个表示当前的分支,一个表示当前的

tag

,或者说你想把他翻译为【标签】或者【版本号】也是可以的,因为大家都把

tag

当作版本号。

在这里插入图片描述

在这里肯定是选择

Tags

选项卡了。毕竟你也看到了,截图中展示的就是分支名称,这谁看得懂啊。直接切换

Tags

选项卡查看历史版本。

在这里插入图片描述

是不是一目了然?所以还是得强调一下规范的作用。如果他们要是在

tag

里面说一堆醉汉一样的胡话,那就彻底没办法了。

什么?你说项目保密?字段全用

aaa

表示?方便别人看不懂?那,祝你好运。

好了,剩下的就是一点点找了。

最终,我在这里发现了一个很大的改动,也就是在v7.2.0中的requirements.txt和v7.2.1中的requirements.txt里面是这么限定的:
名称v7.2.0中的版本v7.2.1中的版本entrypoints不限不限jupyter_core

       ≥
      
      
       4.9.2
      
     
     
      \ge4.9.2
     
    
   ≥4.9.2
   
    
     
      
       ≥
      
      
       4.9.2
      
     
     
      \ge4.9.2
     
    
   ≥4.9.2nest-asyncio
   
    
     
      
       ≥
      
      
       1.5.1
      
     
     
      \ge1.5.1
     
    
   ≥1.5.1
   
    
     
      
       ≥
      
      
       1.5.4
      
     
     
      \ge1.5.4
     
    
   ≥1.5.4python-dateutil
   
    
     
      
       ≥
      
      
       2.1
      
     
     
      \ge2.1
     
    
   ≥2.1
   
    
     
      
       ≥
      
      
       2.8
      
     
     
      \ge2.8
     
    
   ≥2.8pyzmq
   
    
     
      
       ≥
      
      
       17
      
     
     
      \ge17
     
    
   ≥17
   
    
     
      
       ≥
      
      
       22.3
      
     
     
      \ge22.3
     
    
   ≥22.3tornado
   
    
     
      
       ≥
      
      
       5.0
      
     
     
      \ge5.0
     
    
   ≥5.0
   
    
     
      
       ≥
      
      
       6.0
      
     
     
      \ge6.0
     
    
   ≥6.0traitlets不限不限

好了,发现问题。能够支持当前

paddle2.0

的最高版本也就只有

jupyter-client

的7.2.0的版本。

那就下载嘛。

pip install jupyter-client==7.2.0

虽然下载之后

jupyter-client

还是会下载较新的

pyzmq

,但是这个时候再次使用命令:

pip installpyzmq==18.1.1

这时将不会再报错。

你以为这就结束了?

还有个幺蛾子:

protobuf

版本不对应。

如果版本过于超前,将会报错,所以选择较低版本:

pip installprotobuf==3.19.4

需要注意的是,两个等号前后不要有空格,否则会被认定为

install

命令的参数而出现各种各样奇奇怪怪的错误。

又好气又好笑的bug

安装好了

protobuf

之后,又开始报错:

NameError: name 'batch'isnot defined

一开始我还以为是版本问题,结果发现已经有人踩坑了,还发了一个issue,当然最后还有一个回答:

装好了重启内核。—— rancheng commented on 3 Jul 2021

结果还真解决了。

当然也有没解决的情况,比如会报错:

libSM.so.6: cannot open shared objectfile: No such fileor directory

如果不是内核没重启的问题就是linux本身没有库的问题,按照这篇博客给的方法安装就好了:

apt-getinstall -y libsm6 libxext6 libxrender-dev

你以为又双叒叕结束了?

飞桨不支持

Ubuntu2204

。参见这篇博客:PaddlePaddle 尚不支持 Ubuntu22.04 | 作者:zhqh100

如果你很不幸地使用了

Ubuntu2204

,这意味着你以前的所有踩坑全是白费的。

相当的绝望呢。

标签: jupyter flask python

本文转载自: https://blog.csdn.net/ordinary_brony/article/details/125585961
版权归原作者 ordinary_brony 所有, 如有侵权,请联系我们删除。

“jupyter和pyzmq之间的一些个奇葩坑”的评论:

还没有评论