概述
文章目录
- 导读
- 发现问题
- GitHub版本回溯查询
- 你以为这就结束了?
- 又好气又好笑的bug
- 你以为又双叒叕结束了?
导读
估计不少人和我遇到了同样的问题,jupyter-client
和pyzmq
两个永远不在同一个星球的家伙。这次将解决方法记下来,免得以后遇到了还是得重新找解决方案。
发现问题
如果全都是安装最新版,那么jupyter-client
和pyzmq
永远都能保持一致,因为互相都是依赖最新的内容,互相都在进步。
可问题是,我目前需要安装的是paddle2.0
。整理其中的依赖,会发现有这些东西:
名称 | 版本 |
---|---|
Jinja2 | 3.1.2 |
MarkupSafe | 2.1.1 |
absl-py | 1.1.0 |
click | 8.1.3 |
cloudpickle | 1.6.0 |
flask | 2.1.2 |
flask-cors | 3.0.10 |
grpcio | 1.47.0 |
importlib-metadata | 4.12.0 |
itsdangerous | 2.1.2 |
markdown | 3.3.7 |
parl | 2.0.4 |
psutil | 5.9.1 |
pyzmq | 18.1.1 |
scipy | 1.7.3 |
tb-nightly | 1.15.0a20190801 |
tensorboardX | 1.8 |
termcolor | 1.1.0 |
typing-extensions | 4.3.0 |
werkzeug | 2.1.2 |
zipp | 3.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.2 |
nest-asyncio | ≥ 1.5.1 ge1.5.1 ≥1.5.1 | ≥ 1.5.4 ge1.5.4 ≥1.5.4 |
python-dateutil | ≥ 2.1 ge2.1 ≥2.1 | ≥ 2.8 ge2.8 ≥2.8 |
pyzmq | ≥ 17 ge17 ≥17 | ≥ 22.3 ge22.3 ≥22.3 |
tornado | ≥ 5.0 ge5.0 ≥5.0 | ≥ 6.0 ge6.0 ≥6.0 |
traitlets | 不限 | 不限 |
好了,发现问题。能够支持当前paddle2.0
的最高版本也就只有jupyter-client
的7.2.0的版本。
那就下载嘛。
pip install jupyter-client==7.2.0
虽然下载之后jupyter-client
还是会下载较新的pyzmq
,但是这个时候再次使用命令:
pip install pyzmq==18.1.1
这时将不会再报错。
你以为这就结束了?
还有个幺蛾子:protobuf
版本不对应。
如果版本过于超前,将会报错,所以选择较低版本:
pip install protobuf==3.19.4
需要注意的是,两个等号前后不要有空格,否则会被认定为install
命令的参数而出现各种各样奇奇怪怪的错误。
又好气又好笑的bug
安装好了protobuf
之后,又开始报错:
NameError: name 'batch' is not defined
一开始我还以为是版本问题,结果发现已经有人踩坑了,还发了一个issue,当然最后还有一个回答:
装好了重启内核。—— rancheng commented on 3 Jul 2021
结果还真解决了。
当然也有没解决的情况,比如会报错:
libSM.so.6: cannot open shared object file: No such file or directory
如果不是内核没重启的问题就是linux本身没有库的问题,按照这篇博客给的方法安装就好了:
apt-get install -y libsm6 libxext6 libxrender-dev
你以为又双叒叕结束了?
飞桨不支持Ubuntu2204
。参见这篇博客:PaddlePaddle 尚不支持 Ubuntu22.04 | 作者:zhqh100
如果你很不幸地使用了Ubuntu2204
,这意味着你以前的所有踩坑全是白费的。
相当的绝望呢。
最后
以上就是美丽咖啡为你收集整理的jupyter和pyzmq之间的一些个奇葩坑导读发现问题GitHub版本回溯查询你以为这就结束了?又好气又好笑的bug你以为又双叒叕结束了?的全部内容,希望文章能够帮你解决jupyter和pyzmq之间的一些个奇葩坑导读发现问题GitHub版本回溯查询你以为这就结束了?又好气又好笑的bug你以为又双叒叕结束了?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复