Python中Pycharm解释器配置中virtualenv和conda env的区别是什么?
想再请教一个关于 Pycharm 下配置 Anaconda 的问题,晚上大部分的教程都是解释在 interpreter 中选择 virtualenv,然后在 virtualenv 里面在选择 anaconda 的 python 路径,但是 pycharm 里面还有一个 Conda env,里面也可以配置,这两个环境有什么区别。
看了 stackflow 的 https://stackoverflow.com/questions/51978816/what-is-the-difference-between-pycharm-virtual-environment-and-anaconda-environm
里面总结到:
To sum up:
Conda Environment:
- Manage not only Python packages but also different Python versions and system-wide dependencies.
- Envs are located in user-wide directories.
- Less envs.
Virtualenv Environment:
- Manage Python packages. Main purpose is to segement dependencies for every applications.
- Envs are usually located in project-wide directories.(Although pipenv creates env in user-wide directories by
default, many people think in project directories should be the default.)
- Much more envs.(A new env for every application)
不吹牛的说- -#,这里每个字我都认识。。。但是还是不太懂他们的区别,什么是 system-wide dependencies 和 applications-wide dependencies?
Python中Pycharm解释器配置中virtualenv和conda env的区别是什么?
帮顶
简单说,virtualenv是Python原生的轻量级虚拟环境,只隔离Python包;conda env是Anaconda/Miniconda带的,能隔离Python版本和任意软件包(包括非Python的C库)。
virtualenv:
- 用
pip install virtualenv装,纯Python实现 - 只管理Python包依赖,环境里的Python版本和系统一致
- 激活后改
PATH,让python和pip指向环境目录 - 在PyCharm里选"Existing environment",指向
venv/bin/python就行
conda env:
- 装Anaconda/Miniconda自带,用
conda create -n myenv python=3.9创建 - 能装任意软件(如
conda install numpy会带编译好的MKL库) - 可以指定Python版本(哪怕系统没装那个版本)
- 在PyCharm里选"Conda Environment",指向
envs/myenv文件夹
怎么选:
- 纯Python项目,用virtualenv更轻快
- 做数据科学、机器学习,或者需要特定版本Python/C库,用conda更方便
- 两者别混用,一个项目固定用一种
总结:按项目需求选,别混着用。
conda 的会带有系统相关的依赖,vir 只会有应用层面的依赖,是不是这样理解?
我这样说吧,比如这个包 pywin32 是个系统级别的依赖包,我在 pycharm 里面使用 virenv,克隆自 conda 的 python,并不会带有这个包,而我 conda 的 python 是带有 pywin32 的这个包的,但是我克隆的 virenv 选的是继承所有的包的,但是他并没有帮我把 pywin32.带上。也就是说 virenv 它克隆环境的时候,并不会克隆系统级别的包
我不知道这样解释正不正确,但是这是我的理解,欢迎知道的大佬探讨。
我消化消化,谢谢
venv 出现就是为了每一个 project 都有自己独立的一系列包依赖而不影响其他 project。Anaconda 则是一个自带了很多依赖包的 python,你在 python 里选 venv,它还是会隔离所有的包,但如果你选 conda,就会继承 Anaconda 的包。我是这么理解的,不过没怎么用过 conda,不知道系统依赖是什么情况
应该是 pycharm 里选 venv
我觉得像这种功能,应该先了解下这些软件 or 功能的本来面目,不要先用 ide,用命令行先熟悉下再用 ide 会好一些
让我帮你 google 一下: https://stackoverflow.com/questions/38217545/what-is-the-difference-between-pyenv-virtualenv-anaconda/39928067
virtualenv 是在当前版本已有的 python 下继承基本的 binary,以及可选的一部分库,然后在用户目录安装自定义的包。
conda 主要是严格的包管理。比如我就要版本号为 123 的那个,就是不多不少。environment.yml 定好版本,在不同的部署环境下严格一致。
此外,anaconda 安装后,每次命令都会保存 log,你可以通过 --rev 命令回滚,还可以从 python 3.1 切换到 3.2,cuda 版本号自己随便改,gcc 也可以内部集成一个。

