Python中大家平时会用 pip 或 conda 的 virtual environment 吗
null
Python中大家平时会用 pip 或 conda 的 virtual environment 吗
会,如果什么都装全局,很占空间,版本也不好管理
当然用啊,这基本上是现代Python开发的标配了。
用虚拟环境主要是为了隔离项目依赖。比如你手头项目A需要Django 2.2,项目B需要Django 4.0,如果都装到系统Python里,版本肯定冲突,环境就乱套了。虚拟环境让每个项目有自己的site-packages目录,互不干扰。
pip + venv(Python 3.3+自带)是最轻量的组合,适合大多数纯Python项目:
# 创建环境
python -m venv myenv
# 激活(Windows)
myenv\Scripts\activate
# 激活(Linux/Mac)
source myenv/bin/activate
# 安装包
pip install requests
# 退出环境
deactivate
conda更适合数据科学领域,因为它不仅能管Python包,还能管理非Python依赖(比如R、C库),而且conda的包预编译好了,装起来省心。
# 创建指定Python版本的环境
conda create -n myenv python=3.9
# 激活
conda activate myenv
# 安装包(conda和pip混用也行,但建议优先conda)
conda install numpy pandas
简单说就是:一般开发用venv,搞数据科学或者需要复杂非Python依赖的用conda。
总结:隔离依赖,避免混乱,必用。
日常使用 ing。
不太理解,在不同 env 装同样的 lib 不是才占空间吗
今天刚刚折腾了好久
用 conda 管理环境,很方便,也很干净
Why not…
我用 conda 装在另一个 env 装相同版本的 lib,多占的空间很少,原因是默认用了文件系统的软 /硬链接的功能,实际上只存了一份
有道理 thx,可是为什么装全局更占空间呢
conda + pipenv
从没用过全局
这么笨呢?主要是用来隔离的啊,两个项目用两个不同版本的库你怎么办?项目做多了你全局环境乱七八糟的不烦吗?
pipenv + autoenv
#8 实际上更占空间,只是为了版本管理方便以及防止依赖包版本冲突
不会,因为要求在系统 python 运行,所以装了也没用
人家是在关心哪个更占空间的问题,你非要说版本隔离、环境干净,还说人笨???
顺道请教楼上各位用 env 的各位,你们会将 env 文件夹放到到版本库(比如 git )里去吗?如果会,这会导致每个项目的实际体积很大。如果不会,那回滚代码的时候就找不到当时的 env。你们是怎么做的?
显然只需要导出放 requirement.txt
空间?空间是最不值钱的。4T 硬盘搞起。
比起这个,干净整洁、管理成本低、冲突概率低、索引速度快。。。各种收益都比空间要大得多。
而且,一般人手里也不会有那么多份项目在活跃,不活跃的项目尽情打包、存档、放服务器好了,并不占(你的)空间。
什么你是搞 python 的? python 依赖环境才多大啊,我居然浪费这么多口舌解释空间的价值问题。
我还以为你搞 java、搞 node 呢!
日常开发根本离不开 conda
conda 不是挺好? 严重同意 18 楼朋友的观点, 这年头,硬盘便宜,内存也便宜, 如果能够快速完成一个项目,这些都不算啥
自从用了 docker,就不用 conda 的虚拟环境了,因为一个项目不仅有 python 环境,还要控制别的一些环境,docker 全打包成虚拟环境了。
具体举例来说有的项目是 python 2 有的是 python 3 就存在兼容问题
虽然一般不会同时开发两个版本的 python 的项目,但难保不运行一些小工具或者 demo
全量的,pycharm 建索引很累

