环境操作
添加环境
1 | conda create -n py35 python=3.5 anaconda |
-n
指定环境名,python=
指定python版本,python=3.5
+anaconda
表示该环境中要安装或更新的包。
https://docs.conda.io/projects/conda/en/latest/commands/create.html
查看环境
1 | conda env list |
修改环境中的python版本
会替换掉原来的python.exe(在base环境中无法替换)。
1 | conda install python=3.6 |
复制环境
1 | conda create -n new_env --clone old_env |
删除环境
1 | conda remove -n py35 --all |
重命名
先复制,再删除
激活和退出环境
1 | conda active py35 |
Anaconda文件夹及其原理说明
安装Anaconda时,选用的python版本是3.8,Anaconda的安装路径为D:\Anaconda\anaconda3
,python.exe作为默认环境base的解译器,保存在该目录下。
所有的包安装在pkgs
文件夹下(Anaconda安装目录总的10.1个G,pkgs文件夹占了5.63G),不同版本用文件夹名称区分(如下图)。
python.exe在哪?pip在哪?
默认环境base的python.exe在Anaconda的安装目录下(pip在路径Scripts
下),不同环境下的python.exe在envs/环境名/
目录下。如果你的电脑上本身安装了一个python(已经将其目录添加到环境变量path
中),某个环境(base或者自建的)需要的python版本刚好和电脑上自带的版本一致,则不会在环境目录下安装python.exe,而是索引到电脑上已有的那个python文件夹去。
创建环境的时候怎么搜索已有的python?顺序是怎样的?找不到又要怎么办?
创建环境(包括安装Anaconda时自动创建的base环境)时,Anaconda心里面已经想好了要安装的python版本,然后这时候开始搜索环境变量path
,如果找到了对应的版本,就会把python的安装路径保存下来,不会额外安装python。
如果找遍了环境变量发现没有python,则开始从网上下载安装,安装的位置就在环境所在的目录下(base环境的目录就是Anaconda的安装目录,其他环境的目录位于envs/环境名/
)
激活不同环境后使用python和pip有什么区别?
打开Anaconda Prompt
,输入python -V
和pip -V
,结果如下。可以看出,由于之前我们指定python版本号为3.5创建了一个环境py35,当切换到这个环境后使用python和pip,发现其路径是Anaconda安装路径\envs\py35
;切回到base环境,发现路径就是Anaconda安装路径。
1 | (py35) C:\Users\whuls>python -V |
这时候我们创建一个新的环境,命名为test(conda create -n test
,不指定python版本),然后切换到这个环境下,运行python -V
和pip -V
,结果如下。可以看出,创建环境时,Anaconda搜索了环境变量path
的值,发现了在我电脑的D:\python37
存在一个可用的python版本,于是就把这个python拿来,作为新环境的python解译器(我愿称之为“省流大师”)。
1 | (base) PS C:\Users\whuls> conda activate test |
还有一个很有意思的现象,如果把环境变量path
中的python路径删掉,使用conda create -n 环境名
创建环境并激活后,无法找到python和pip,看来如果不指定python,conda默认不设置python,全凭环境变量处置。
Anaconda不建议将其安装目录添加到环境变量中,而如果电脑上也不愿意暴露出python的路径,避免pip安装混乱,则必须在创建环境时指定python版本号(如果不指定,使用
conda create -n name python
,会安装最新的python)。官方对create命令的参数有如下说明。(完整参数)
1 conda create [-n ENVIRONMENT | -p PATH] [package_spec [package_spec ...]]参数
python=3.8
或python
或anaconda
,都是package_spec
,也就是要加到envs/环境名/
下的包内容,如果省去了这个参数,直接conda create -n 环境名
,则不会添加任何包,和普通的powershell没啥区别(只有用到conda install
才会有所区别,但因为conda无法安装gluoncv,所以不用它)。
直接在Powershell中使用python和pip和在conda中使用有什么区别?
conda作为一个python版本管理工具,允许用户在不同环境下自由切换使用的python版本。如果在powershell中使用python,使用的是Windows环境变量path
记录的第一个python路径下的python和pip,这里假设该路径为D:\Python37\
。使用pip install
命令安装的所有东西都会存放在同一个路径下的Scripts
文件夹中(D:\Python37\Scripts
)。
那么问题来了,有些代码对python的版本有要求,比如某些较老的代码需要python2.x;而有些代码必须在python3.5版本下运行,在python3.6或以上的版本运行就会报错。虽然可以将所有版本的python路径都添加到Windows的环境变量path
中,但是在命令行或powershell中调用时,只会运行path
中记录的第一个python,这就无法做到自由调用不同版本。
而在conda中,可以为一个环境指定一个python版本,不同版本的python保存在不同的路径下,由Anaconda统一管理路径,用户只需要切换环境就可以实现不同python版本的调用。
Conda设置代理
https://blog.csdn.net/tianshixingyu/article/details/80239317
在C:\Users\xxx\
下找到.condarc
,添加代理服务器地址。
1 | proxy_servers: |