这几天没事在琢磨 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 操作是否有什么影响?
希望大家指教!谢谢
1
messyidea 2019-05-18 00:28:34 +08:00
我用的是 pyenv 装的 conda,都用 pyenv 来控制。
1.如果都设置同一个 python3.7 会污染,可以用 pyenv-virtualenv 来解决。 2.包会缓存。 3.这个没影响,只是当前环境下的 python 变了 |
2
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. |
3
AllenBigBear OP @clavichord93 嗯,谢谢耐心的回复。
还想请教下。打个比方您说的对各个包的版本依赖不同这一点。 举个例子:我还是有三个项目 A,B,C,都是在 python3.7 下面开发 django,但是分别依赖于 django1.0 django1.5 django2.0 (只是举例子,而且我们假设三个 django 版本会有冲突),那这样的情况下我是不是要设置三个 python3.7 的环境了? |
4
clavichord93 2019-05-18 11:26:34 +08:00 via iPhone
@AllenBigBear 对
|