小白求教关于 Conda 的环境使用问题

2019-05-17 23:49:08 +08:00
 AllenBigBear

这几天没事在琢磨 conda 的使用问题。看了非常多的帖子,包括 v2 站内的帖子,但还是有些搞不明白。

环境:Macos

IDE:Pycharm

默认 Python 版本:Python3.7

问题: 1:已经理解了,conda 的关键作用是可以创建不同版本的 python 的环境。 但是比如我有项目 A,项目 B,项目 C,三个项目,同时用 python3.7 进行开发。 那我如果同时将这 3 个项目的解释器都设置为 conda 下面 Python3.7 解释器,开发过程中会发生 conda 本身环境污染这种情况吗?(我目前认为肯定没必要设置 3 个 3.7 的解释器吧?不然 conda 就没有意义了)

2:如果我新建了 conda 环境,比如 python3.5 的环境,那么新的环境里面基本上是没有什么包的,等于是干净的,那我如果需要安装一些包,这些包会需要像之前 pip 安装一样去下载吗?还是说会从 conda 的主环境(某种缓存?)去拖过来?

3:使用了 conda 以后,打开终端 terminal,显示的环境是( base ),不知道这个对平时日常的 mac 操作是否有什么影响?

希望大家指教!谢谢

2770 次点击
所在节点    程序员
4 条回复
messyidea
2019-05-18 00:28:34 +08:00
我用的是 pyenv 装的 conda,都用 pyenv 来控制。
1.如果都设置同一个 python3.7 会污染,可以用 pyenv-virtualenv 来解决。
2.包会缓存。
3.这个没影响,只是当前环境下的 python 变了
clavichord93
2019-05-18 00:32:44 +08:00
其实你压根就没理解“环境”这玩意到底是干嘛的。。。环境是用来解决不同的项目开发过程中,需要的包依赖及其版本不同,导致冲突的问题,这里面不光是 python 版本不同,也包括相同的 python 版本但是某些包的版本不同。至于你说的创建不同版本的环境,pyenv+virtualenv 一样可以解决,而 conda 的优势在于可以在环境中把 python 之外的语言的依赖也同时进行管理,而劣势在于处理依赖关系比较慢和包相对 pypi 较少。

然后是你的问题。

1. 你开发过程中如果 conda install 或者 pip install 了某些包,那肯定后改变环境,至于算不算污染,你自己判断吧。如果你没有 install 别的包,那就不会改变。

2. conda create 产生的环境是空的,只有必要的几个包,至于其它的,需要 conda install -n 来重新安装。如果你之前安装过,conda 应该会从 pkgs 里面直接读吧。

3. 不会。只是告诉你当前环境是什么。

3.
AllenBigBear
2019-05-18 10:54:19 +08:00
@clavichord93 嗯,谢谢耐心的回复。
还想请教下。打个比方您说的对各个包的版本依赖不同这一点。

举个例子:我还是有三个项目 A,B,C,都是在 python3.7 下面开发 django,但是分别依赖于 django1.0 django1.5 django2.0 (只是举例子,而且我们假设三个 django 版本会有冲突),那这样的情况下我是不是要设置三个 python3.7 的环境了?
clavichord93
2019-05-18 11:26:34 +08:00

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

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

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

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

© 2021 V2EX