V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
CatCode
V2EX  ›  Python

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

  •  
  •   CatCode · 137 天前 · 987 次点击
    这是一个创建于 137 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 里找不到这些函数,直接无法启动了。

    我彻底无语了。

    10 条回复    2023-12-14 14:13:43 +08:00
    zhlxsh
        1
    zhlxsh  
       137 天前 via iPhone
    够写一集电视剧了😅
    Rubbly
        2
    Rubbly  
       137 天前
    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
        3
    dayeye2006199  
       137 天前 via iPhone
    pip 可解
    009694
        4
    009694  
       137 天前 via iPhone
    为什么要强调 base 里不用 conda-forge ?
    CatCode
        5
    CatCode  
    OP
       136 天前
    @009694 因为 conda-forge 里的 qtconsole 更新了 5.5.1 版本
    CatCode
        6
    CatCode  
    OP
       136 天前
    @Rubbly 我知道一个环境里可以混合 channel 。但我这里主要是 base 环境,这个环境我一般习惯保持一定的更新频率,而且用默认的 channel 。如果我在这个 base 环境里加入了 conda-forge 的包,之后 update 的时候也要加入 -c conda-forge 参数,但这样会把其他包也升级到 conda-forge 里的版本。

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

    另外我得和你说,除了写在 receipy 里面的测试以外,一般 conda-forge 的发布不会比上游做更多的测试。我参与维护的一个开源项目就经常遇到 C++依赖被升级到上游根本没测过的版本,如果不批准这个升级,整个 conda-forge 里这个依赖就会被卡在之前的版本,所以维护者有很大的压力要批准。但是上游没有针对 C++依赖的测试(谁没事测依赖),所以时不时会出现上游还没见过的 bug ,然后还要哄着上游去修。
    NoOneNoBody
        8
    NoOneNoBody  
       136 天前
    我有两个环境,里面的包几乎一样,主观区别就是我在要用一个 package ,暂时没有找到替代品,而它稍旧,依赖 numpy 需要教低版本,结果就是一连串的反应,opencv, numba ... 等等都要使用旧版适应,我只好另设一个环境
    iorilu
        9
    iorilu  
       135 天前
    没有就 pip 装呗, 有啥区别
    fbichijing
        10
    fbichijing  
       135 天前
    自己尝试装啊。为啥要对 anaconda 有那么强的依赖性?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   908 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:22 · PVG 06:22 · LAX 15:22 · JFK 18:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.