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

查看 92|回复 5
作者:vituralfuture   
如题,已经在 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”,都没有找到这个问题
我尝试过:
[ol]
  • 浏览器打开 raw.githubusercontent.com ,导出 pem 文件,加入到 conda 环境下的 ssl 证书文件末尾
  • 复制系统的 ssl 证书,覆盖 conda 的证书文件
    [/ol]
    都没有 work
    所以我再也不想使用 conda 了,浪费了我太多时间在这些没用的地方
    最开始考虑使用 docker 管理 python 环境,但是有两个问题
    [ol]
  • docker 里的 python 解释器,它能运行图形化界面吗?比如 PyQt ,matplotlib 等等,这个问题我没有试过,存疑
  • pycharm 怎么使用 docker 里的解释器?我尝试过,似乎是这么一个逻辑,创建 docker 容器时添加了一个-rm 参数,退出容器时自动销毁,下次进入时,会从 docker image 重新创建一全新的容器,优点就是这个容器是绝对干净的,缺点就是:1. 安装的其他库都会随着 docker 容器一起被删除 2. 有时候需要对库文件作出修改,比如 matplotlib 不能画中文图表,需要对库文件作出修改才能画
    [/ol]
    现在作为一个折中,使用 virtualenv ,这个东西好用吗?我想其实也不太好用
    因为每次进入都太麻烦了!
    大佬们是如何解决的?求指点!

    conda, SSL, Python, curl

  • RedisMasterNode   
    如果觉得 virtualenv 比较难用的话,可以试试看 virtualenvwrapper 能不能帮你减少一部分工作量。这个组件我用了 5 年多了,很稳定也很方便,所以一直没去了解过其他的虚拟环境管理工具。
    https://virtualenvwrapper.readthedocs.io/en/latest/install.html
    本质上是 virtualenv 套皮,可以试试看
    wafm   
    其实这么多环境里,conda 应该算是门槛低 且 友好的了
    前提是 你翻出去了
    vituralfuture
    OP
      
    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   
    docker 里的 python 解释器应该是能运行图形化界面的,虽然我没用过但是看这个项目的描述 https://github.com/Ed-Yang/vnpy-docker 应该是可以的。 我一般学校和公司里面用 docker 都是直接装上 openssh-server 然后用 vscode remote ssh 进去写代码,vscode 也可以直接 attach 到 devcontainer 里面,远程开发 pycharm 感觉没 vscode 这么方便,只能起新的容器。
    ZedRover   
    @ZedRover docker 还有一个好处可以直接用现成的 cuda 环境,ray stablebaselines3 torch 等官方都有写好的 image ,迁移到新机器上也比较方便,不过还是要依赖宿主机的 nvidia-driver ,所以切换版本也不是特别自由
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部