Python中大家平时会用 pip 或 conda 的 virtual environment 吗

null
Python中大家平时会用 pip 或 conda 的 virtual environment 吗

24 回复

会,如果什么都装全局,很占空间,版本也不好管理


当然用啊,这基本上是现代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 建索引很累

回到顶部