[吐槽]近期 Anaconda 的 Jupyter-qtconsole 包的问题让我很难受

341 天前
 CatCode

Jupyter-qtconsole ,( conda 包名:qtconsole )简单来说就是把 Python REPL 用 Qt 包了一下,用起来比直接在 cli 里面交互式运行解释器方便很多。我使用这个包的频率挺高的,所以我是把它装到 base 环境下的。
这个包最近更新了 5.5.0 版本。anaconda 官方库也跟随了这个更新。
但是这个 5.5.0 版本有个巨大的 bug:自动补全,如果候选项有多项的话,会报错。
Jupyter-qtconsole 官方库的维护者修了这个 bug ,并且发了 5.5.1 版本。
但 anaconda 官方库不跟了,不跟了不跟了
我不在 base 环境下用 conda-forge 的库,所以只能暂时退回 anaconda 官方库里的 5.4.2 版本。

这个 qtconsole 包有个依赖,叫 menuinst 。前几天 anaconda 官方库把它的版本给更新了,新版本丢掉了一些 legacy 的函数,于是 qtconsole 在新的 menuinst 里找不到这些函数,直接无法启动了。

我彻底无语了。

1254 次点击
所在节点    Python
10 条回复
zhlxsh
341 天前
够写一集电视剧了😅
Rubbly
341 天前
Anaconda 本来就不保证所有包会及时更新 (并不是不跟了),他们会定期在经过一定的测试和验证之后统一更新,对于科学计算来说一般也不太需要过高的更新频率。我瞅了眼 qtconsole 的在 anaconda source 里面的更新日志,有些版本都直接跳过了。

但这也并不是没有解决方案,如果实在是需要最新版本的,官方也是允许使用其他的安装方式例如自行编译或者使用 conda-forge/pip ,在严格检查包依赖的情况下,大部分情况下是不会产生问题的。最让你难受的,大概是自己的环境洁癖?(ref: https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#using-pip-in-an-environment)

但我的理解是环境隔离的一大好处就是为了方便你折腾某个特定环境,如果实在担心,那就搞个 dev 环境用一下 pip 过渡,等官方源更新之后在切回去 base 再更新嘛。。
dayeye2006199
341 天前
pip 可解
009694
341 天前
为什么要强调 base 里不用 conda-forge ?
CatCode
341 天前
@009694 因为 conda-forge 里的 qtconsole 更新了 5.5.1 版本
CatCode
341 天前
@Rubbly 我知道一个环境里可以混合 channel 。但我这里主要是 base 环境,这个环境我一般习惯保持一定的更新频率,而且用默认的 channel 。如果我在这个 base 环境里加入了 conda-forge 的包,之后 update 的时候也要加入 -c conda-forge 参数,但这样会把其他包也升级到 conda-forge 里的版本。

我也一直认为 anaconda 的包会经过一定的测试和验证。但很明显 qtconsole 没有经过足够的验证。
billccn
341 天前
上游有 bug 修复的话,尝试到 conda-forge 相应的仓库发个 issue ,Github 会给维护者发邮件的。维护者的名字在仓库里也有,你可以去他(们) GH 主页看看最近有没有维护,没有的话去 conda 社区邮件列表发一封语气很委婉的英文信,也许会有其他成员帮你。

另外我得和你说,除了写在 receipy 里面的测试以外,一般 conda-forge 的发布不会比上游做更多的测试。我参与维护的一个开源项目就经常遇到 C++依赖被升级到上游根本没测过的版本,如果不批准这个升级,整个 conda-forge 里这个依赖就会被卡在之前的版本,所以维护者有很大的压力要批准。但是上游没有针对 C++依赖的测试(谁没事测依赖),所以时不时会出现上游还没见过的 bug ,然后还要哄着上游去修。
NoOneNoBody
341 天前
我有两个环境,里面的包几乎一样,主观区别就是我在要用一个 package ,暂时没有找到替代品,而它稍旧,依赖 numpy 需要教低版本,结果就是一连串的反应,opencv, numba ... 等等都要使用旧版适应,我只好另设一个环境
iorilu
340 天前
没有就 pip 装呗, 有啥区别
fbichijing
340 天前
自己尝试装啊。为啥要对 anaconda 有那么强的依赖性?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/999842

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX