Python | 用mamba替换conda、使用PyPy技术加速

长期以来,受苦于conda在安装、更新时的缓慢,最近听好朋友yyx介绍说了mamba,完全是conda的上位替代,做了一些探索;

另外,前几天B站也刷到了对PyPy加速策略的介绍视频,感觉可以做一些尝试

在接触mamba时,有很多名词,导致概念之间很混乱。所以第一步就是搞清楚这些词是在说什么

  • conda:本质上是一个包管理工具,可以实现环境管理、依赖检索、包下载更新
  • Anaconda:一个Python的发行版本,安装后包含conda和一些常见的数据科学工具包
  • miniconda:纯净的conda,不带有额外工具包,由Anaconda(公司)设计
  • conda-forge:本质上是一个仓库,conda用于集中下载各类包的仓库,由社区维护的
  • mamba:对conda的优化和重写(仍旧是python版本),可以加速对环境版本的计算
  • micromamba:用C++重写的mamba,加速效果很明显(基于libmamba库)
  • miniforge:类似于miniconda,但是由conda-forge社区开发

根据官方给出的安装策略,分为如下几个步骤:

  1. 备份并卸载原本的miniconda,下面是导出卸载时的命令

    conda env export > environment.yml
    
  2. 下载binary的mamba安装包(这里是官网上的安装流程

    自己安装时curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba解压报错,于是手动下载这个链接、手动解压(tar jxvf FileName.tar.bz2)到对应目录,得到的bin/micromamba就是mamba工具

  3. 配置命令行工具到cmd工具/设置环境变量

    • 参考官网的./bin/micromamba shell init -s bash -p ./bin命令来配置命令行工具(-p目录后是mamba的配置文件,可以直接和mamba工具放在一起,随后source ~/.bashrc重启bash)
    • 或者直接将解压得到的bin目录加到环境变量即可直接使用

    PS:个人觉得windows直接使用mini-forge的命令行工具就可以了,不需要配置到默认的命令行工具里

  4. 有个比较讨厌的事情是micromamba命令太长了,可以用软连接换个名字,换为mamba或者原来习惯用的conda

    PS:软连接务必使用完整路径,一定不可以使用相对路径!

    ln -s /micromamba/bin/micromamba /micromamba/bin/mamba
    ln -s /micromamba/bin/micromamba /micromamba/bin/conda
    
  5. 随后就可以正常使用micromamba了

    mamba activate
    

看起来,PyPy在本质上就是JIT技术(Just-in-time)。第一次听说这个技术是在julia语言学习时,当时的理解就是一种预编译,即在运行前对代码进行编译得到机器码,然后再执行时就能够快很多。再次去回顾了下julia的文档,

可以直接使用如下的命令行进行安装和下载

mamba install pypy

最近,RustPython也发布了,其相比于CPython具有更高的性能和安全性,是另一种Python的加速策略。不过也是刚刚发布,可以再观望一段时间其稳定性

之前一段时间pycharm在检测mamba环境是会报错,不能准确加载出其python环境,但最近的新版本好像已经解决了,直接加载对应环境的目录就可以了