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
vituralfuture
V2EX  ›  Python

[吐槽] conda 真是太难用了! 如何优雅地管理 Python 环境?

  •  2
     
  •   vituralfuture · 2023-05-09 17:45:25 +08:00 · 10589 次点击
    这是一个创建于 555 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,已经在 anaconda 上折腾了不知道多久,我现在已经彻底放弃使用 conda 了,看到一个比较新的包管理器 pdm ,但是 pycharm 现在还不支持,所以就用 virtualenv 了

    首先,我的机器是 archlinux ,然后现在还是大二学生,SRTP 项目是机器学习方向的,然后其他比赛也需要用到 numpy, pandas, pytorch 这一堆东西

    当我还在用 windows 时,根本不 care 什么虚拟环境,啥包都是无脑装到系统解释器,当时需要的科学计算有关的库,最多就是 numpy,pytorch.matplotlib 这些东西,也没有啥版本要求,直接用最新的版本,用的库也不是很多,这种方法没啥问题

    然后主力切换到 linux 后,我发现 linux 的 python 系统解释器很重要,因为它是系统依赖之一,也出现过不规范操作,导致 python 一个解析 JSON 的库出错,然后 pip 依赖这个库,导致 pip 也不能工作,还有一次手贱卸载了一个不知道是干啥用的库,导致有些软件用不了了,从此我只敢在系统解析器安装 requests 这种比较小的库,用来写爬虫,其他都安装到虚拟环境

    后来,因为想尝试一下 conda ,所以我安装了 conda ,遇到第一个问题就是,安装后在我的 shell 里没有 conda 这个命令,然后网上找到的教程,他们的 conda 基本都是安装到用户的家,而我安装到 /opt 下的,没法借鉴。后来我从 aur 里发现,打包的人说“为了不污染环境,把 conda 作为一个函数在 shell 中调用,导入这个函数需要执行一个脚本”,然后我把这个脚本加到了~/.zshrc里,登录就执行一遍,这个问题折腾了几小时

    再后来,我发现 conda 安装库老是卡死,先声明,我已经搭建了一个透明代理的环境,网络是不存在问题的,它总是卡在解析依赖的地方,实在不想等

    有一次 archlinux 系统更新的时候,archlinux 的包管理器 pacman 检测到/opt/anaconda/...下面很多头文件冲突了,没法安装系统更新,我在 reddit 找到了类似的问题,解决办法:卸载 conda ,安装系统更新,重新安装 conda 。 代价就是,我的一堆环境全部重新安装。。。

    最后一次,也就是一天前,我执行一行代码,从 raw.githubusercontent.com 下载一个 scv 文件,遇到一个问题:ssl 证书不能验证

    其实之前我就发现,当我进入 conda 的环境时,使用curl命令,用的不是系统的 curl,而是/opt/anaconda/bin/curl命令,然后使用 curl 命令从 raw.githubusercontent.com 下载一个文件时,也出现了同样的问题:ssl 证书不能验证。当时我用/usr/bin/curl来简单地避开了这个问题

    但是,这次 python 代码需要从 raw.githubusercontent.com 下载 csv 文件,没有一个方法能 workaround 掉这个问题,然后我 google 了几小时,大概是"conda ssl", "conda ssl certificate", "conda curl ssl", "conda lack of ssl certificate”,都没有找到这个问题

    我尝试过:

    1. 浏览器打开 raw.githubusercontent.com ,导出 pem 文件,加入到 conda 环境下的 ssl 证书文件末尾
    2. 复制系统的 ssl 证书,覆盖 conda 的证书文件

    都没有 work
    所以我再也不想使用 conda 了,浪费了我太多时间在这些没用的地方

    最开始考虑使用 docker 管理 python 环境,但是有两个问题

    1. docker 里的 python 解释器,它能运行图形化界面吗?比如 PyQt ,matplotlib 等等,这个问题我没有试过,存疑
    2. pycharm 怎么使用 docker 里的解释器?我尝试过,似乎是这么一个逻辑,创建 docker 容器时添加了一个-rm 参数,退出容器时自动销毁,下次进入时,会从 docker image 重新创建一全新的容器,优点就是这个容器是绝对干净的,缺点就是:1. 安装的其他库都会随着 docker 容器一起被删除 2. 有时候需要对库文件作出修改,比如 matplotlib 不能画中文图表,需要对库文件作出修改才能画

    现在作为一个折中,使用 virtualenv ,这个东西好用吗?我想其实也不太好用 因为每次进入都太麻烦了!

    大佬们是如何解决的?求指点!

    91 条回复    2024-07-10 19:22:35 +08:00
    RedisMasterNode
        1
    RedisMasterNode  
       2023-05-09 17:48:31 +08:00
    如果觉得 virtualenv 比较难用的话,可以试试看 virtualenvwrapper 能不能帮你减少一部分工作量。这个组件我用了 5 年多了,很稳定也很方便,所以一直没去了解过其他的虚拟环境管理工具。

    https://virtualenvwrapper.readthedocs.io/en/latest/install.html

    本质上是 virtualenv 套皮,可以试试看
    wafm
        2
    wafm  
       2023-05-09 17:50:13 +08:00
    其实这么多环境里,conda 应该算是门槛低 且 友好的了

    前提是 你翻出去了
    vituralfuture
        3
    vituralfuture  
    OP
       2023-05-09 17:51:49 +08:00
    anaconda 的 ssl 证书文件这个问题,可以复现
    步骤:
    1. 拉一个 archlinux 的 docker 镜像
    2. 安装 aur 里的[anaconda]( https://aur.archlinux.org/packages/anaconda)
    3. 进入 conda 主环境`conda activate base`
    4. `curl raw.githubusercontent.com `或在 python 中发起 raw.githubusercontent.com 的请求

    这种问题,我不确定是 aur 包的问题还是 conda 的问题
    ZedRover
        4
    ZedRover  
       2023-05-09 17:52:12 +08:00
    docker 里的 python 解释器应该是能运行图形化界面的,虽然我没用过但是看这个项目的描述 https://github.com/Ed-Yang/vnpy-docker 应该是可以的。 我一般学校和公司里面用 docker 都是直接装上 openssh-server 然后用 vscode remote ssh 进去写代码,vscode 也可以直接 attach 到 devcontainer 里面,远程开发 pycharm 感觉没 vscode 这么方便,只能起新的容器。
    ZedRover
        5
    ZedRover  
       2023-05-09 17:54:39 +08:00   ❤️ 1
    @ZedRover docker 还有一个好处可以直接用现成的 cuda 环境,ray stablebaselines3 torch 等官方都有写好的 image ,迁移到新机器上也比较方便,不过还是要依赖宿主机的 nvidia-driver ,所以切换版本也不是特别自由
    XunjieL
        6
    XunjieL  
       2023-05-09 18:03:35 +08:00   ❤️ 1
    poetry + pyenv, 折腾很多 python 包管理和环境管理工具了,这两个组合已经完全够我用了,以后不会再变了; pyenv 负责管理和下载多个 python 版本,可以一键切换全局 python 版本;在 pyenv 的基础上,poetry (记得换源)的包管理终于能让我不那么费心 python 项目的部署问题了,缺点可能就是分析依赖的时候略慢( python 第三方包鱼龙混杂导致的),现在速度比前几年好很多了。
    wangmou
        7
    wangmou  
       2023-05-09 18:09:54 +08:00
    conda 搭配代理一直有些七七八八的问题,我都是用国内源,后来就没遇到过这些问题,无论 win 还是 Linux 服务器。
    aphyllan
        8
    aphyllan  
       2023-05-09 18:17:43 +08:00
    目前在用 micromamba + conda-forge ,体验真的比 Anaconda 全家桶好太多。
    di94sh
        9
    di94sh  
       2023-05-09 18:18:43 +08:00
    https://github.com/mitsuhiko/rye

    试试 flask 作者实验品,hhh
    conn457567
        10
    conn457567  
       2023-05-09 18:20:38 +08:00 via Android
    我也是折腾了好久,换来换去,最后还是用 docker 来完全隔离所有开发环境。简单的可以用 asdf+virtualenv ,系统的 python 解释器完全不动,也不手动安装任何包
    optional
        11
    optional  
       2023-05-09 18:20:52 +08:00 via iPhone
    conda 算是比较好用了
    alne
        12
    alne  
       2023-05-09 18:26:12 +08:00
    别的领域不知道,机器学习 conda 算是比较好用的了
    Muniesa
        13
    Muniesa  
       2023-05-09 18:37:03 +08:00 via Android
    呃,你是用别人打包的 anaconda 吗?建议装官网的 miniconda ,安装时会有写入 bashrc/zshrc 的提示,装到用户目录也不可能和系统的更新冲突,而且没有你那个 curl…
    adoal
        14
    adoal  
       2023-05-09 18:42:56 +08:00   ❤️ 1
    客户端软件在建立 SSL 连接的时候需要验证对方证书是否在“我认可的”Root CA 链下。这个 Root CA 的列表是储存在本机系统里某个地方的。如果你用的是 Linux 发行版们打包好的软件,通常会改过代码或者编译选项,指定从一个系统默认位置去读。但如果是第三方或者自己编译的,可能软件上游默认并不会去读发行版设置的默认位置,那么 Root CA 列表可能会过时或者缺失。

    可以试试这段里提到的 REQUESTS_CA_BUNDLE / CURL_CA_BUNDLE 环境变量 https://requests.readthedocs.io/en/latest/user/advanced/#ssl-cert-verification

    把它指到发行版默认的位置去。Arch 我不清楚,deb 系是 /etc/ssl/certs/ca-certificates.crt ,你找找看 Arch 里对应的位置试试看。
    RRRoger
        15
    RRRoger  
       2023-05-09 18:58:42 +08:00
    miniconda
    Ricardoo
        16
    Ricardoo  
       2023-05-09 19:26:04 +08:00   ❤️ 3
    > 后来,因为想尝试一下 conda ,所以我安装了 conda ,遇到第一个问题就是,安装后在我的 shell 里没有 conda 这个命令,然后网上找到的教程,他们的 conda 基本都是安装到用户的家,而我安装到 /opt 下的,没法借鉴。后来我从 aur 里发现,打包的人说“为了不污染环境,把 conda 作为一个函数在 shell 中调用,导入这个函数需要执行一个脚本”,然后我把这个脚本加到了~/.zshrc 里,登录就执行一遍,这个问题折腾了几小时
    下载官方原版, 安装结束会询问你是否将命令写入 bashrc ,选择 yes ,重启 terminal 即可。

    > 再后来,我发现 conda 安装库老是卡死,先声明,我已经搭建了一个透明代理的环境,网络是不存在问题的,它总是卡在解析依赖的地方,实在不想等。
    conda 安装前会检测环境各种包的依赖关系,如果 混合使用 pip 和 conda 安装包 会导致提示 The environment is inconsistent 。依赖解析会非常非常慢,甚至卡死。建议新建的环境里仅使用 conda install 或 pip 安装。保持环境干净

    > 有一次 archlinux 系统更新的时候,archlinux 的包管理器 pacman 检测到 /opt/anaconda/...下面很多头文件冲突了,没法安装系统更新,我在 reddit 找到了类似的问题,解决办法:卸载 conda ,安装系统更新,重新安装 conda 。 代价就是,我的一堆环境全部重新安装。。。
    请不要使用 aur 安装 anaconda ,下载官方原版,手动安装。

    > 使用 curl 命令,用的不是系统的 curl,而是 /opt/anaconda/bin/curl 命令
    当你使用 base 环境的时候默认调用的是 anaconda 的 curl ,
    1.可以重命名的方法规避系统使用它,mv /opt/anaconda/bin/curl /opt/anaconda/bin/curl1 ;
    2.使用 conda 新建环境,在新环境里不会使用 base 环境里的 curl

    额外说一句:conda 新建环境并激活后,是将新环境的 bin 目录加载 PATH 路径前面,以此覆盖同名指令。只要这个原理可以帮你排查大部分指令调用的问题。

    conda 几乎是 ML 领域最优雅的管理环境的工具。建议多看看官方文档。
    vituralfuture
        17
    vituralfuture  
    OP
       2023-05-09 19:31:59 +08:00
    @Muniesa 对的,我用的是 aur 源里的 anaconda ,是别人打包好的,用 aur 的原因主要是 archlinux 官方源里只有 free and open source software ,要装其他软件得去 aur 里,用 aur 的好处是更新方便。我试试装到用户目录

    至于 curl ,这东西我都无法理解为什么 anaconda 安装目录下会有这东西
    连 ssl 证书都有
    Trim21
        18
    Trim21  
       2023-05-09 19:34:40 +08:00
    有些包 conda 有预编译的 wheel ,pip 没有,用 conda 安装不需要自己解决编译问题。
    nah
        19
    nah  
       2023-05-09 19:38:40 +08:00
    anaconda 的缺点是臃肿,换 miniconda 之类的吧。
    jZEdn7k4
        20
    jZEdn7k4  
       2023-05-09 19:40:44 +08:00
    但机器学习确实主流就是 conda 。。。如果 conda 用不明白的话其他虚拟环境带来的问题只会更多
    vituralfuture
        21
    vituralfuture  
    OP
       2023-05-09 19:42:32 +08:00
    @Ricardoo 谢谢谢谢
    第一个问题,这确实是,还是应该去用官方的,aur 用习惯了 ,里面有些包不太好用确实比较正常,毕竟不保证可用

    第二个问题,这个还是我孤陋寡闻了,我之前模模糊糊地有这个想法,就是 conda 和 pip 不能混用,后面我看到老师演示安装包的时候直接 pip ,我还很震惊,问了他,他说可以,然后后面有一个项目用到的库 conda 没有,无奈用 pip 安装了,难怪会卡在解析依赖这一步

    似乎我使用 conda 遇到的很多问题似乎都是 aur 的包的问题
    我使用 conda 的方式还是不对,确实该多读读文档,RTFD
    knightdf
        22
    knightdf  
       2023-05-09 19:49:30 +08:00
    就 virtualenv+virtualenvwrapper 吧,最简单好用
    BBCCBB
        23
    BBCCBB  
       2023-05-09 19:53:02 +08:00
    还是好好学 conda 吧, 至少你得看看他的入门教程和文档..
    0o0O0o0O0o
        24
    0o0O0o0O0o  
       2023-05-09 19:57:28 +08:00 via iPhone
    devcontainers
    iorilu
        25
    iorilu  
       2023-05-09 19:59:01 +08:00 via Android
    我觉得 miniconda 很好,其他的可能问题更多
    levelworm
        26
    levelworm  
       2023-05-09 20:04:40 +08:00 via Android
    Pycharm 基本上都自动化了
    SJ2050cn
        27
    SJ2050cn  
       2023-05-09 20:08:47 +08:00
    不只针对 Python 环境,超算上一般都用 module 来管理各种软件,系统环境都是很纯净的,要用哪个软件适时加载。
    Corey0606
        28
    Corey0606  
       2023-05-09 20:11:26 +08:00 via iPhone
    配好多个版本环境的环境变量 虚拟环境也挺香
    Muniesa
        29
    Muniesa  
       2023-05-09 20:16:17 +08:00 via Android
    @vituralfuture 有 curl 是因为 conda 不仅仅是 Python 的包管理器,gcc 什么的都可以通过 conda 装,curl 应该是 anaconda 预装的一堆包里的一个
    morton098
        30
    morton098  
       2023-05-09 20:16:21 +08:00
    现在用的 poetry
    pipecat
        31
    pipecat  
       2023-05-09 20:19:19 +08:00
    同使用 micro-mamba 。解析速度对比 conda 提升非常明显,conda 命令无缝切换,推荐尝试。
    ryan4yin
        32
    ryan4yin  
       2023-05-09 20:21:33 +08:00 via Android
    建议用 docker ,这本质是一个环境冲突问题。
    ulosggs
        33
    ulosggs  
       2023-05-09 20:22:43 +08:00   ❤️ 3
    用 conda 注意以下三点,几乎不会出现问题
    1. 下载官网的 Miniconda , 安装到用户目录
    2. 只要能用 conda 安装的包都用 conda 安装,避免使用 pip 。尤其是基础包
    3. 使用 conda activate/deactivate 切换环境,不要手动设置 PATH ,LD_LIBRARY_PATH

    然后 resolving 慢的问题,可以使用 libmamba ,解析依赖速度飞快
    conda install -n base conda-libmamba-solver
    conda config --set solver libmamba
    14
        34
    14  
       2023-05-09 20:37:51 +08:00
    我也是 pyenv + poetry
    coolair
        35
    coolair  
       2023-05-09 20:38:39 +08:00
    @ulosggs 请问下大佬,用 conda 从 requirements.txt 安装包,从没有成功过是为啥?谢谢。

    报错如下:

    > conda install --yes --file requirements.txt
    Collecting package metadata (current_repodata.json): done
    Solving environment: failed with initial frozen solve. Retrying with flexible solve.
    Collecting package metadata (repodata.json): done
    Solving environment: failed with initial frozen solve. Retrying with flexible solve.

    PackagesNotFoundError: The following packages are not available from current channels:

    - gradio==3.28.3
    - icetk
    - cpm_kernels
    - layoutparser
    - transformers==4.27.1
    - unstructured
    - faiss-cpu
    - peft
    - langchain==0.0.146
    - fastapi
    - sentence-transformers
    - accelerate

    Current channels:

    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/noarch
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/win-64
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/noarch
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/win-64
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/noarch

    To search for alternate channels that may provide the conda package you're
    looking for, navigate to

    https://anaconda.org

    and use the search bar at the top of the page.
    pljhonglu
        36
    pljhonglu  
       2023-05-09 20:42:03 +08:00
    用了 [rtx]( https://github.com/jdxcode/rtx) 之后就丢掉了 pyenv 、nvm 、rbenv 。
    lululau
        37
    lululau  
       2023-05-09 20:53:52 +08:00
    有管理不同版本 Intepreters/Packages 的需求的话,就别用 Python 了,感觉 virtualenv/anaconda/pyenv/pipenv/poetry 这些工具对于 Python 开发者来说太复杂了,Python 要的就是一个简单
    ospider
        38
    ospider  
       2023-05-09 20:56:16 +08:00   ❤️ 1
    你这明明是墙的问题,赖到 conda 头上……
    swhhaa
        39
    swhhaa  
       2023-05-09 20:59:19 +08:00
    我用 poetry + pyenv.... 说实话确实感觉挺复杂的
    sunrisewestern
        40
    sunrisewestern  
       2023-05-09 22:42:52 +08:00
    老老实实 conda 官方教程装一遍,上面的问题基本解决了。
    solver 可以换成 libmamba ,也有官方文档的说明。
    项目使用非 base 环境,不同项目不同环境,能减少包安装解析的压力,也能规避 curl 的问题
    ispinfx
        41
    ispinfx  
       2023-05-09 22:54:13 +08:00
    都用 Python 了,还要什么自行车呢
    paopjian
        42
    paopjian  
       2023-05-09 23:26:12 +08:00
    感觉所有的问题都是不看官方文档,也不用官方发布包...
    cy18
        43
    cy18  
       2023-05-09 23:39:49 +08:00   ❤️ 1
    就我一个人用 pipenv 的么...
    我现在简单命令用 MSYS2/Linux 自带,数据分析处理相关的 Anaconda ,程序开发就用 pipenv 。
    alne
        44
    alne  
       2023-05-09 23:45:12 +08:00 via Android
    @coolair #35 源里没有这几个包呗
    指定一下别的源,比如-c conda-forge
    chesha1
        45
    chesha1  
       2023-05-09 23:51:31 +08:00
    conda 已经算好用的了,你原来在 Windows 下不在意环境直接硬装,如果要用两个版本的 pytorch ,那怎么办呢

    1. 你发现环境装错了,卸载掉原来的,在用户目录下重新装一个不就好了,为什么要折腾自己
    不管是用 anaconda 还是 miniconda 还是别的,默认就是装在用户目录的吧,你想装到别的地方反而要手动指定目录,挺奇怪的

    2. 卡在解析依赖,可能是你用了 conda install xxx ,用 pip install xxx 就没这个问题了

    3. 用 docker 只会比 conda 更麻烦,我唯一知道必须要用 docker 的地方是,nv 的新显卡对于 pytorch 有优化,比如 4090 ,不用 nv 的容器,用 pytorch 官方的 pytorch 性能会下降,不知道 pytorch 官方什么时候才能更新就先用 nv 维护的 pytorch
    xdygxh
        46
    xdygxh  
       2023-05-09 23:58:09 +08:00
    conda 还难用的话,其他的虚拟环境管理工具只会更难用。
    dayeye2006199
        47
    dayeye2006199  
       2023-05-10 00:47:56 +08:00
    virtualenv 把,如果你需要管理多 cuda 版本之类的活的话。
    否则还是 conda 用的更无脑一些。
    inframe
        48
    inframe  
       2023-05-10 01:37:41 +08:00
    conda 可以管大版本 3.8 ,3.9 ,3.10 ;
    也可以自己下源代码自己编译下,然后单独 virtualenv 拉虚拟环境;在 Windows 上就这么玩的,集齐了官方 Cython 3.7-3.10

    virtualenv 管项目,一个项目开一个虚拟包;
    XIVN1987
        49
    XIVN1987  
       2023-05-10 09:06:57 +08:00
    我也觉得 windows 下使用 python 更简单,,
    因为 windows 本身完全不依赖 python ,,所以 windows 下可以随意更新 python 、python 包而不用担心导致系统崩溃。。
    jakehu
        50
    jakehu  
       2023-05-10 09:15:29 +08:00
    pyenv
    tach1koma
        51
    tach1koma  
       2023-05-10 09:19:52 +08:00
    miniconda 只用来管理环境,每个环境里用 pip 管理包
    guoli100
        52
    guoli100  
       2023-05-10 09:39:21 +08:00
    pyenv
    mogazheng
        53
    mogazheng  
       2023-05-10 09:41:20 +08:00
    墙的问题,至少你这个 github 域名的问题就是。
    命令行环境要设置 http_proxy 环境变量墙才能生效, 可以 curl 验证下。
    然后老实安装官方的 conda 。
    整完后基本上不会有什么正常使用的问题。
    不要轻易怀疑一个能流行起来的东西,难道大家都是忍着在用的吗。
    mingwiki
        54
    mingwiki  
       2023-05-10 11:22:34 +08:00
    python3 已经集成了 venv 通过 python3 -m venv .使用 不用安装任何东西非常方便 https://www.liaoxuefeng.com/wiki/1016959663602400/1019273143120480
    air00dd
        55
    air00dd  
       2023-05-10 11:25:33 +08:00
    @XunjieL 请问 poetry 为什么要“记得换源”,有什么说法吗?
    cherryas
        56
    cherryas  
       2023-05-10 11:48:28 +08:00
    原生 Python venv 不好吗?
    alne
        57
    alne  
       2023-05-10 12:51:11 +08:00 via Android
    @cherryas 不好,一堆二进制包怎么管理
    iorilu
        58
    iorilu  
       2023-05-10 12:52:35 +08:00 via Android
    @cherryas 两码事,conda 可以指定不同版本 python ,比如一个项目用 3.6 一个项目用 3.10
    crsmk01
        59
    crsmk01  
       2023-05-10 13:32:20 +08:00
    miniconda
    dcoder
        60
    dcoder  
       2023-05-10 13:36:06 +08:00
    conda 都难用... 那 docker + remote debugger 不得更难用...

    conda 要用的话, 要求一整套都得用它的, 你好好看看文档.
    还有, 看看翻墙的 VPN 是不是太慢
    dif
        61
    dif  
       2023-05-10 13:47:15 +08:00
    目前用的 miniconda ,配置国内源还好吧,没出现过你说的问题。
    lambdaq
        62
    lambdaq  
       2023-05-10 14:00:06 +08:00
    这既不是 conda 的问题,也不是 curl 的问题,而是 linux 下 TLS 本来就很难用的问题。。。。。
    liudaolunhuibl
        63
    liudaolunhuibl  
       2023-05-10 14:04:45 +08:00
    我也有同样的感觉,实际上感觉用了一圈下来还是没有能超越 java maven 的

    另外 lz 好厉害啊,我大二的时候还在玩人机
    MasterCai
        64
    MasterCai  
       2023-05-10 14:32:38 +08:00 via iPhone
    conda 确实不好用,想迁移一下环境一大堆问题

    但是好像也没有比更好用同时这么流行的包管理器了(至少是在 ml 领域是这样的)
    XunjieL
        65
    XunjieL  
       2023-05-10 15:28:04 +08:00
    @air00dd 没什么说法,跟 pip 换源一个道理,换个清华、ustc 或者阿里源
    air00dd
        66
    air00dd  
       2023-05-10 15:32:06 +08:00
    @XunjieL 有时候直接走全局代理就不用记忆什么时候要换源的问题
    vZexc0m
        67
    vZexc0m  
       2023-05-10 15:33:07 +08:00
    @iorilu #58 原生 Python venv 也行啊 10 个项目用 10 个版本的 Python 都行
    coolair
        68
    coolair  
       2023-05-10 15:34:48 +08:00
    @alne 指定了也没有,而且我发现 conda 有些包的版本不是最新的,到头来还是得用 pip 安装。
    charseer
        69
    charseer  
       2023-05-10 15:38:08 +08:00
    之前很流行的 Vagrant 现在怎么没人提了,感觉很适合管理这些
    alne
        70
    alne  
       2023-05-10 15:43:13 +08:00
    @coolair #68 是的,有些包只有 pip 有
    nyxsonsleep
        71
    nyxsonsleep  
       2023-05-10 16:35:21 +08:00
    @vituralfuture anaconda 里,要么全用 conda 要么全用 pip ,通常都是全用 pip ,conda 只收录部分库。两个是不能混用的,很明显的就是 pip list 不显示 conda 安装的库,反之 conda list 也不显示 pip 的安装的库。
    coreki
        72
    coreki  
       2023-05-10 16:45:13 +08:00
    virtualenv+pip 路过,轻量,大的项目就 docker 打包
    cherryas
        73
    cherryas  
       2023-05-10 17:01:33 +08:00
    @iorilu venv 也可以。 要多少个版本的 python 下载就行。
    linvaux
        74
    linvaux  
       2023-05-10 17:25:09 +08:00
    miniconda 吧,conda 确实太笨重了,而且加载也很慢
    KouYiGuo
        75
    KouYiGuo  
       2023-05-10 17:40:05 +08:00
    poertry
    KouYiGuo
        76
    KouYiGuo  
       2023-05-10 17:40:23 +08:00
    poetry
    way2explore2
        77
    way2explore2  
       2023-05-10 18:10:26 +08:00 via Android
    @XunjieL 赞同

    从 conda 换到 poetry pipenv 很香
    跟 nvm npm 可以一拼
    iorilu
        78
    iorilu  
       2023-05-10 18:49:33 +08:00
    @cherryas 原始 python 你装多个要指定路径得把

    难度你创建 venv 要这样

    /usr/bin/python venv venv
    /usr/bin/python2 venv venv

    不方便啊
    alne
        79
    alne  
       2023-05-11 00:35:08 +08:00
    @nyxsonsleep #71 conda list 是可以显示 pip 装的库的啊,反之不行。
    不过有时候更新 conda 会把 pip 装的库给删掉,不知道什么情况
    VonBrank
        80
    VonBrank  
       2023-05-11 05:34:40 +08:00 via Android
    @liudaolunhuibl 楼主的经历好真实,我用 conda 也是这感觉

    不过对我来说更希望的是 Python 有类似 cargo 或者 npm/yarn 的包管理器。当然 maven/gradle 也挺好
    cherryas
        81
    cherryas  
       2023-05-11 09:25:38 +08:00
    @iorilu 都是命令行切换又不是重新定义环境变量
    jeremyl313
        82
    jeremyl313  
       2023-05-11 09:55:07 +08:00
    @XunjieL 这里居然也能逮到你
    jeremyl313
        83
    jeremyl313  
       2023-05-11 09:57:19 +08:00
    已经习惯 conda 里面用 pip 了,不过经常 pip 安装包失败,就比如 lap ,pycocotools ,都要本地编译,conda-forge 都有现成的 wheel
    XunjieL
        84
    XunjieL  
       2023-05-11 10:29:40 +08:00
    @air00dd hhhhh 我一般能用国内镜像就尽量用,从物理距离上那还是国内快一些,比如 golang, pip, apt, 一般遇到了速度瓶颈我才会显式调用代理,这样在处理一些莫名其妙网络 bug 的时候不需要考虑代理因素; 但确实有因为国内源导致的 bug, 比如更新不及时导致的版本 bug
    XunjieL
        85
    XunjieL  
       2023-05-11 10:30:26 +08:00
    @jeremyl313 完了 被发现上班摸鱼了
    lhb5883
        86
    lhb5883  
       2023-05-11 11:09:50 +08:00
    正常 不想折腾可以看看有没有好心人做了 Docker 镜像。
    lyz1990
        87
    lyz1990  
       2023-05-11 11:42:53 +08:00
    目前在用 miniconda , 感觉还行
    limaofeng
        88
    limaofeng  
       2023-05-12 10:00:55 +08:00
    如果已经用 docker 了,conda 就有些多余了

    最近在主力 Mac 电脑上,用 conda 替换 virtualenv 了,virtualenv 只支持 python 。conda 的适用面要广些
    zyxbcde
        89
    zyxbcde  
       2023-05-16 00:53:11 +08:00 via iPhone
    一般都是一个项目一个虚拟环境,用 pycharm 几乎傻瓜操作了。不过因为单位 nodejs 版本过低,用了 pyenv 把默认 python 切成 3.10 了,然后还安了 3.11
    qcts33
        90
    qcts33  
       2023-07-17 17:21:42 +08:00
    这么多天了才偶然看到这个帖子
    我这边推荐尝试一下 mambaforge ,这是由 conda-forge 社区提供的,算是一个变种的 miniconda ,但是用 conda-forge channel 替代了 anaconda 的官方 channel ,另外还添加了 mamba 来解决 conda 包解析迟钝的问题。
    楼主做机器学习方向的话还是坚持用基于 conda 的生态会比较好,pip 安装 numpy 和 scipy 的时候要跟 BLAS 和 LAPACK 做绑定会比较麻烦
    coreJK
        91
    coreJK  
       127 天前
    个人的实践:
    1. pyenv 管理多版本 python
    2. pipx 管理 python 构建的应用程序(比如 PDM 自己)
    3. pdm 管理项目的依赖,构建发布内容
    其他特殊的设备上,就还是用原生的 venv 去管理, build 去构建二进制文件吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1143 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:54 · PVG 06:54 · LAX 14:54 · JFK 17:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.