hawcat
文章27
标签36
分类9

文章分类

文章归档

为什么推荐别人使用Anaconda等虚拟环境,我自己却不用

为什么推荐别人使用Anaconda等虚拟环境,我自己却不用

叠甲

先提前说一下,写这篇文章的目的不是说Anaconda/Miniconda这类虚拟环境不好用等等,反之,它们非常好用,并且非常适合专注于代码、试验、科研的人群。其次就是我也不是任何时候都不用,只是特定场景还是要用到我自己的环境。

时间线

  • 因为最近的项目很多都是需要部署到其他机器上去的,并且刚好有其他学校的学生也来问我怎么把环境打包给同组的同学用,当时采用的方法是直接简单暴力的把conda的整个env环境拷贝过去,但其实这带来了很多问题,如果专注于部署便捷性,很显然一些只需要进行运行的机器其实并不需要经过conda的这一步,而且如果使用conda迁移后的环境在自动化上也是需要多一步activate。并且conda的推荐做法也是使用conda create -n torch2.1–clone /path/to/new/machine。由于USER_SITE的存在导致很多包并不位于conda虚拟环境中,而且当你好奇为什么明明我是直接把整个env,复制过去,但在我本地使用python.exe -m pip list和复制到新机器上的env使用python.exe -m pip list输出的包都不一样时,可能同组的成员已经新建了环境并且跑到下一步了。这就带来了很多的不便捷性。

  • 之后也尝试过把环境托管到本地的svn进行统一管理,每一个包的安装都进行颗粒化提交,虽然好用是好用,但开销太大,本地和服务端都需要双倍的存储,也不好用。

  • 后来用了comfyui后从他的项目里得到了一些灵感,直接使用embedded版本的python放在共享盘里面做分发,并且写了一个小工具实时轮询维护。

小工具写的比较简单,第一步解压embeddable package,第二步安装pip,第三步修改python310._pth让其能识别到site_packages,最后一步在site_packages中添加pth,让embeddable package版本的python能识别自定义的包,让你不需要在项目代码中添加sys.path.join(os.path.abspath(file))

放在github上了hawcat/sync_ur_python (github.com)

总结一下

其实深入python embeddable package会发现installer和conda以及一些ide帮我们做了很多事情,让我们能够专注于代码。

:D 获取中...

本文作者:hawcat
本文链接:https://hawcat.cn/2024/01/17/anaconda/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×