当某个环境所安装的包与其他环境安装的包会相互冲突,或者想要单独定义一个完成某特定任务的环境时,通常需要用到虚拟环境。
conda info
conda env list
conda info --envs
conda create --name your_env_name python=x.y
conda create --name B --clone A
conda create --name B --clone D:\A
生成的新环境的位置在anaconda的安装路径下,例如D:\Users\ZC\anaconda3\envs文件夹下。
conda remove --name 虚拟环境名 --all
或者直接删除环境文件夹(可能会有残余)
conda remove --name $your_env_name $package_name
https://Anaconda.org的服务器在国外,安装多个packages时,有时conda下载的速度很慢甚至无法连接。可用国内教育镜像资源,例如中科大或清华TUNA镜像源,将其加入conda的配置即可:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
有些包使用conda只能从指定channel的附加库中安装,如fitter用conda安装时只能从bioconda channel,或者有时想要安装最新版python时只能从conda-forge,这时需要配置附加库。下面以中科大附加库为例:
Conda Forge
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
msys2
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
bioconda
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
menpo
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
conda config --show
conda config --remove-key channels
conda config --remove channels
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
关于conda通道的配置问题
当需要在虚拟环境中安装最新的大版本python时,先config conda-forge的镜像通道;或者需要conda install 特定的包时,先config 对应指定的镜像通道;安装配置完成后,再conda config --remove-key channels,删除这些通道,恢复默认,以防后续出现安装或升级包时出现一些不兼容的报错。
配置conda channels的默认顺序,一般比较保险的原则是:先官方通道,然后附加库,然后镜像库A,然后镜像库B等,例如
使用 conda update --all 或者 conda update python 只能升级python的小版本,例如从3.x.y 到 3.x.y+;如果想升级大版本,例如从3.x 到 3.x+,可以用 conda install python=3.11;但直接在base环境中安装最新版,可能出现与有些已安装包的版本不兼容问题,例如:
所以最好是在新建的空的虚拟环境中安装最新版python最保险:
conda create --name your_inv_name python=3.11(最新版本)
但是有时候python最新版在常规通道中不能获取,这时需要配置conda-forge通道,从conda-forge中可安装最新版。
也可以从python官网中直接下载安装最新版,只是需要从该安装路径下,去安装该解释器环境的相关包。例如可以cd到带python.exe的安装目录,再用python -m pip install 模块名。
当安装较大的包时,pip通常下载较慢,最好使用临时镜像通道,而不去配置默认镜像通道。例如清华TUNA PyPI镜像源:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
或者中科大PyPI镜像源:
pip install -i https://mirrors.ustc.edu.cn/pypi/web/simple package
当安装了anaconda、create了虚拟环境、从python官网也有下载安装python时,就有多个解释器及其对应的环境可以选择,以适应不同项目的要求。在pycharm中可以方便地指定或切换解释器及其对应环境:
在设置中搜索控制台,选择构建、执行、部署中的控制台,在Python解释器中选择想要的python安装目录下的解释器,选定之后对应的环境也会选定。但最好是选择跟项目相同的解释器环境,为了在console中调试脚本时不会出现包和版本的报错问题。
当有不同的项目需要配置不同的解释器环境时,就可以在项目中选择需要的解释器。下图是anaconda的默认解释器及其环境,虚拟环境中的python.exe一般在anaconda3\envs\your_env_name下,官网安装的python就在对应的安装路径下。注意当项目的解释器切换时,如果要用到console,最好将console的解释器也切换为相同的。
当选择用pycharm新建虚拟环境时,location一般是到某个项目的文件夹下,base interpreter可以选择conda的python主解释器,也可以选择conda某个虚拟环境下的python解释器,也可以选择将要从python官网下载的不同大版本的解释器,也可以选择从官网下载已安装的python解释器。
当interpreter选择默认的 new virtualenv时,就是在pycharm中新建conda的虚拟环境。此时就需要在conda envs的默认路径下新建一个文件夹并命名,该文件夹就用来放虚拟环境。然后选择这个虚拟环境的python大版本,以及conda的可执行文件。这个操作就相当于:conda create --name your_env_name python=x.y,只是在pycharm的对话框中进行而已。
此界面中的interpreter也可以选择conda已有的默认python解释器,或者已建立的虚拟环境中的解释器,这时就相当于使用conda base环境,或者conda activate your_env_name。
当已有为不同项目足够使用的不同python大版本的环境时,也可以为每个项目都指定不同的系统解释器,而不必再去新建或配置pycharm的、或conda的环境了,因为环境新建和配置的工作之前已经做了,现在要编写不同环境需求的项目脚本时,就直接以切换系统解释器的方式使用就行。