[再问一个关于 Anaconda 和 Pycharm 的小白问题] Pycharm 解释器配置中 virtualenv 和 conda env 的区别

2019-01-08 23:59:09 +08:00
 ooleslie
想再请教一个关于 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?
5609 次点击
所在节点    Python
10 条回复
Baboonowen
2019-01-09 00:48:28 +08:00
帮顶
jiangnanyanyu
2019-01-09 01:05:11 +08:00
conda 的会带有系统相关的依赖,vir 只会有应用层面的依赖,是不是这样理解?
ooleslie
2019-01-09 01:10:28 +08:00
@jiangnanyanyu 能否具体说明下什么是系统相关的依赖性,单词我理解,就是不了解具体可能的情况是什么
jiangnanyanyu
2019-01-09 01:16:57 +08:00
@ooleslie 我这样说吧,比如这个包 pywin32 是个系统级别的依赖包,我在 pycharm 里面使用 virenv,克隆自 conda 的 python,并不会带有这个包,而我 conda 的 python 是带有 pywin32 的这个包的,但是我克隆的 virenv 选的是继承所有的包的,但是他并没有帮我把 pywin32.带上。也就是说 virenv 它克隆环境的时候,并不会克隆系统级别的包
jiangnanyanyu
2019-01-09 01:17:44 +08:00
我不知道这样解释正不正确,但是这是我的理解,欢迎知道的大佬探讨。
ooleslie
2019-01-09 01:23:19 +08:00
@jiangnanyanyu 我消化消化,谢谢
visitant
2019-01-09 03:02:51 +08:00
venv 出现就是为了每一个 project 都有自己独立的一系列包依赖而不影响其他 project。Anaconda 则是一个自带了很多依赖包的 python,你在 python 里选 venv,它还是会隔离所有的包,但如果你选 conda,就会继承 Anaconda 的包。我是这么理解的,不过没怎么用过 conda,不知道系统依赖是什么情况
visitant
2019-01-09 03:03:27 +08:00
@visitant 应该是 pycharm 里选 venv
visitant
2019-01-09 03:06:25 +08:00
我觉得像这种功能,应该先了解下这些软件 or 功能的本来面目,不要先用 ide,用命令行先熟悉下再用 ide 会好一些
yuikns
2019-01-09 05:12:27 +08:00
让我帮你 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 也可以内部集成一个。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/525203

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX