我有个问题, 为什么 anaconda 的时候还要用 virtualenv?

2018-07-22 10:31:10 +08:00
 darouwan

我在用最新版 pycharm 的时候, 配置了 anaconda3, 但默认还要新建 virtualenv. 但新建之后, 里面的 python3 环境是完全干净的, 并没有 anacaonda 的那些科学计算库, 那为什么 anaconda3 还需要使用 virtualenv 呢?有什么好处吗?

10264 次点击
所在节点    Python
22 条回复
hu6360567
2018-07-22 10:35:44 +08:00
你说的是 condaenv 还是 virtualenv ?
darouwan
2018-07-22 11:17:36 +08:00
@hu6360567 virtualenv, conda 的话有什么区别嘛
ddzzhen
2018-07-22 11:21:17 +08:00
环境配置没有选好路径,不用管自动新建的那个
bucky
2018-07-22 11:44:52 +08:00
anaconda 和 virtualenv 两个没关系,anaconda 功能更多一些,也包括创建虚拟环境
est
2018-07-22 11:47:14 +08:00
anaconda3 是一个母仓库,用 venv 建立多个平行的子工作环境。
kingcos
2018-07-22 12:45:58 +08:00
两个没关系吧,Pycharm 能选择的
zhusimaji
2018-07-22 14:13:55 +08:00
虚拟环境和 anaconda 没啥关系,我以前用 anaconda2.7 后来项目全部使用 3.6 所以我直接新建个个虚拟环境方便快捷
dartabe
2018-07-22 15:26:43 +08:00
同样被这几个东西绕晕了 网上也没找到太简洁的答案
xiaozizayang
2018-07-22 17:57:04 +08:00
你可以这样想也这样用,但用 env 的目的是在一个 anaconda 大的版本下建立力度更小的虚拟环境
比如 10 个项目依赖 py3.6,你不用用 anaconda 建立十个 py3.6 版本项目环境,你可以只用建立一个 py36 的环境,然后基于这个 3.6 版本建立十个虚拟环境,比如使用 pipenv 进行管理
xiaozizayang
2018-07-22 17:58:05 +08:00
@est 你说得对
darouwan
2018-07-22 21:00:23 +08:00
@est 这个我知道,但是用 virtualenv 新建的仓库是空的,没有 anaconda 的那些包, 这样使用 anaconda 的意义何在呢?
darouwan
2018-07-22 21:01:07 +08:00
@kingcos 只是我看默认是新建虚拟库, 但新建的虚拟库并没有 anaconda 的第三方计算包, 不知道这样的意义何在
darouwan
2018-07-22 21:01:54 +08:00
@xiaozizayang 但是这小的虚拟环境, 我看并没有继承 anaconda 的包, 既然这样, 为何不直接用干净的 python 呢
darouwan
2018-07-22 21:02:42 +08:00
@zhusimaji 我也觉得没关系...但默认是使用虚拟环境, 所以我觉得这应该有什么意义把
ayang23
2018-07-22 22:21:31 +08:00
你们的 anaconda 可以建 virtualenv ?我试了好多次都不可以
bucky
2018-07-22 22:45:00 +08:00
@darouwan 大哥,都说了这两个没关系,anaconda 的好处是不仅能创建虚拟环境,还能创建不同版本( 2,3 )的 python 虚拟环境,同时 windows 下有些包用 anaconda 更加容易安装,创建虚拟环境用下面的命令
conda create -n your_env_name python=X.X(2.7、3.6 等)
xyfan
2018-07-22 23:19:20 +08:00
按我的理解,anaconda 里面集成了许多常用的包,这些包很常用,并且相互可能有依赖,如果都自己安装要花很多时间,所以给你了一个集成各种常用包的安装文件,基本不需要自己 pip 或 conda 了,当作科学计算的环境。env 是 pycharm 默认配置的,pycharm 写可能给别人用的项目,自然包越少越好,这样拿到其他环境可以确定只需要某某几个包就能正常运行,而不是说我电脑上有几百个包,你全装一遍肯定能运行。
你要是用 jupyter,spyder,vscode 都不会让你新建虚拟环境。
ilotuo
2018-07-22 23:41:20 +08:00
我的理解是
virtualenv 用来创建最小环境. 只带标准库. 不同环境是不同容器. 不同环境安装的软件互相版本独立.
pyenv 能用 virtualenv 创建环境, 并指定解释器版本.
conda 同 pyenv, 能指定解释器. 是用 virtualenv 创建的环境, 并在此环境安装好科学计算库.
sw0rd3n
2018-07-22 23:47:27 +08:00
刚装好 conda 手贱 rm 删了...
darouwan
2018-07-24 07:46:30 +08:00
@bucky 那等于说, 这里建立虚拟环境, 主要是用 anaconda 方便建立各种版本的环境的这个特点, 而跟自带的各种科学库没关系?

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

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

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

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

© 2021 V2EX