文章目录
估计不少人和我遇到了同样的问题,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中的源码看有没有提示。
一番查询,找到了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命令的参数而出现各种各样奇奇怪怪的错误。
安装好了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,这意味着你以前的所有踩坑全是白费的。
相当的绝望呢。
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee
我正在检查一个Rails项目。在ERubyHTML模板页面上,我看到了这样几行:我不明白为什么不这样写:在这种情况下,||=和ifnil?有什么区别? 最佳答案 在这种特殊情况下没有区别,但可能是出于习惯。每当我看到nil?被使用时,它几乎总是使用不当。在Ruby中,很少有东西在逻辑上是假的,只有文字false和nil是。这意味着像if(!x.nil?)这样的代码几乎总是更好地表示为if(x)除非期望x可能是文字false。我会将其切换为||=false,因为它具有相同的结果,但这在很大程度上取决于偏好。唯一的缺点是赋值会在每次运行
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年
我想找到在某些文本中找到一些(让它是两个)句子的好方法。什么会更好-使用正则表达式或拆分方法?你的想法?应JeremyStein的要求-有一些例子示例:输入:ThefirstthingtodoistocreatetheCommentmodel.We’llcreatethisinthenormalway,butwithonesmalldifference.IfwewerejustcreatingcommentsforanArticlewe’dhaveanintegerfieldcalledarticle_idinthemodeltostoretheforeignkey,butinthis
由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A
在许多ruby类之间共享记录器实例的最佳(正确)方法是什么?现在我只是将记录器创建为全局$logger=Logger.new变量,但我觉得有更好的方法可以在不使用全局变量的情况下执行此操作。如果我有以下内容:moduleFooclassAclassBclassC...classZend在所有类之间共享记录器实例的最佳方式是什么?我是以某种方式在Foo模块中声明/创建记录器还是只是使用全局$logger没问题? 最佳答案 在模块中添加常量:moduleFooLogger=Logger.newclassAclassBclassC..
之前有人问过这个问题,我发现了以下clip关于如何一次设置一个类对象的所有属性,但由于批量分配保护,这在Rails中是不可能的。(例如,您不能Object.attributes={})有没有一种很好的方法可以将一个类的属性合并到另一个类中?object1.attributes=object2.attributes.inject({}){|h,(k,v)|h[k]=vifObjectModel.column_names.include?(k);h}谢谢。 最佳答案 利用assign_attributes使用:without_prote
我有三个模型:User、Product、Offer以及这些模型之间的关系问题。场景:用户1发布了一个产品用户2可以向用户1发送报价,例如10美元用户1可以接受或拒绝提议我现在的问题是:用户、产品和报价之间的正确关系是什么?我如何处理那些“接受或拒绝”操作?是否有更好的解决方案?用户模型:classUser:productsend产品型号:classProduct:usersend提供模型:classOffer提前致谢:)编辑:我正在使用Rails3.2.8 最佳答案 警告:小小说来了第1部分:设置关联我建议阅读Railsguideo