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 里找不到这些函数,直接无法启动了。
我彻底无语了。
1
zhlxsh 347 天前 via iPhone
够写一集电视剧了😅
|
2
Rubbly 346 天前
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 再更新嘛。。 |
3
dayeye2006199 346 天前 via iPhone
pip 可解
|
4
009694 346 天前 via iPhone
为什么要强调 base 里不用 conda-forge ?
|
6
CatCode OP @Rubbly 我知道一个环境里可以混合 channel 。但我这里主要是 base 环境,这个环境我一般习惯保持一定的更新频率,而且用默认的 channel 。如果我在这个 base 环境里加入了 conda-forge 的包,之后 update 的时候也要加入 -c conda-forge 参数,但这样会把其他包也升级到 conda-forge 里的版本。
我也一直认为 anaconda 的包会经过一定的测试和验证。但很明显 qtconsole 没有经过足够的验证。 |
7
billccn 346 天前
上游有 bug 修复的话,尝试到 conda-forge 相应的仓库发个 issue ,Github 会给维护者发邮件的。维护者的名字在仓库里也有,你可以去他(们) GH 主页看看最近有没有维护,没有的话去 conda 社区邮件列表发一封语气很委婉的英文信,也许会有其他成员帮你。
另外我得和你说,除了写在 receipy 里面的测试以外,一般 conda-forge 的发布不会比上游做更多的测试。我参与维护的一个开源项目就经常遇到 C++依赖被升级到上游根本没测过的版本,如果不批准这个升级,整个 conda-forge 里这个依赖就会被卡在之前的版本,所以维护者有很大的压力要批准。但是上游没有针对 C++依赖的测试(谁没事测依赖),所以时不时会出现上游还没见过的 bug ,然后还要哄着上游去修。 |
8
NoOneNoBody 346 天前
我有两个环境,里面的包几乎一样,主观区别就是我在要用一个 package ,暂时没有找到替代品,而它稍旧,依赖 numpy 需要教低版本,结果就是一连串的反应,opencv, numba ... 等等都要使用旧版适应,我只好另设一个环境
|
9
iorilu 345 天前
没有就 pip 装呗, 有啥区别
|
10
fbichijing 345 天前
自己尝试装啊。为啥要对 anaconda 有那么强的依赖性?
|