文章目录
导读
估计不少人和我遇到了同样的问题,
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
,这意味着你以前的所有踩坑全是白费的。
相当的绝望呢。
版权归原作者 ordinary_brony 所有, 如有侵权,请联系我们删除。