日志
- 2023-02-16:添加设置默认环境的方法(仅windows 10)
前言
如果你使用过python进行软件开发,很大概率接触过Conda。这是因为Python有2大版本——Python 2和Python 3,两个版本在某些地方是不兼容的;因此,如果你的工作环境比较复杂,就会发现Python环境配置是一件很麻烦的事。新开发的主流软件基本上都已经使用Python 3,但少数老代码/老软件可能需要在Python 2的环境进行。
此外,受限于开发者对软件兼容性的支持,某个用户的复杂需求甚至需要配置多个不同的python或者其它环境来保证软件正常运行。比如,最近更新的CUDA 11.6/Pytorch 2.0对python版本的要求甚至是一个比较小的区间:
因此,开发者和用户需要一种工具,其只要简单的操作就可以自动化配置多种开发环境而基本不影响主机的原生环境。这也是Conda的设计初衷。在Linux里,Conda是一个十分流行的环境配置工具,操作简单,中英文教程多如牛毛,对小白十分友好。
Conda支持三大PC操作系统(Windows、Linux、MacOS)。对我个人而言,当搭建一些生物信息学pipeline时,往往需要配置多种环境;而生物信息学的大多数软件都是运行在Linux上面,因此我主要是在Linux里面使用Conda。平时我使用m2w或者运行某些深度学习的练习代码时,也会用到Conda的Windows版本,个人觉得不如Linux版本稳定。考虑到初识Linux系统的小伙伴可能没听说过Conda,所以这里作简单的介绍。如果你觉得自己需要经常使用不同的软件环境,本小节还是值得一看的,否则可以忽略之 (ฅ´ω`ฅ)
老实说,我也只是轻度使用Conda,并没有仔细地研究过它的高级用法。不过,Conda的用户手册十分详细,有高级需要的小伙伴可以自行探索和学习。下面我们来简单地了解一下Conda吧!
测试环境
用甲骨文大盘鸡:
uname -a # Linux instance-XXXXXXX-0742 5.15.0-1011-oracle #15-Ubuntu SMP Fri Jun 10 12:21:49 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
安装Conda
对个人用户来说,有Anaconda和miniconda可以选,后者顾名思义就是miniconda只安装一些主要的包,没有Anaconda那么齐全。官方是这样建议的:
The fastest way to obtain conda is to install Miniconda, a mini version of Anaconda that includes only conda and its dependencies. If you prefer to have conda plus over 7,500 open-source packages, install Anaconda.
We recommend you install Anaconda for the local user, which does not require administrator permissions and is the most robust type of installation. You can also install Anaconda system wide, which does require administrator permissions.
因为VPS本来也是空间有限的,因此我建议只装miniconda试用一下。官方的安装sh脚本在此,要按CPU架构选择不同的脚本:https://docs.conda.io/en/latest/miniconda.html#linux-installers。
首先,我们创建一个新的文件夹:
mkdir -p ~/miniconda3 && cd ~/miniconda3
下载安装miniconda的sh脚本。由于甲骨文VPS是aarch64,我这里选的aarch64架构的miniconda下载链接:https://repo.anaconda.com/miniconda/Miniconda3-py310_22.11.1-1-Linux-aarch64.sh 。这个链接应根据实际情况进行替换。
# 下载miniconda的安装脚本
wget -bc -o conda.log -T 120 -t inf https://repo.anaconda.com/miniconda/Miniconda3-py310_22.11.1-1-Linux-aarch64.sh
运行脚本安装minicona
bash *.sh
下面是我安装miniconda的记录:
Do you accept the license terms? [yes|no] # 输入yes
Miniconda3 will now be installed into this location: /root/miniconda3 # 选安装目录。按需要输入即可
... # 过程应该挺简单的
安装好后,观察一下conda的版本:
conda --version # conda 4.12.0
即代表安装成功。
配置Conda
Conda有一个基本环境,名字叫base
。你可以通过下面命令
conda activate base
或:
source ~/.bashrc
激活conda的base环境。如图所示,激活后前面会出现(base)
字样:
表明base
环境已经激活成功。
conda的主要配置可以通过操作~/.condarc
文件来设置,比如更改镜像。如果你的VPS在国内,可以尝试添加清华镜像:
vim ~/.condarc
添加以下内容:
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
:wq
保存退出。
由于我的甲骨文是在国外,不需要更改镜像。我们观察一下python的安装位置:
which python # /root/miniconda3/bin/python
环境
conda可以配置多个环境(environment)。我们可以观察一下自己的conda有多少个环境:
conda info --envs
# conda environments:
#
# base * /root/miniconda3
# py3.7.6 /root/miniconda3/envs/py3.7.6
或者可以使用该命令:
conda env list
其中的*
代表正在使用的环境。我还配置了一个名为py3.7.6
的环境,当时是为了测试m2w用的。这里我再创建一个名为test
的环境,它需要python 3.8.16(你可以在这里查看python的历史版本)。你可以输入以下命令:
conda create -n test python=3.8.16 -y
这里的-y
表示自动跳过手动确认(与apt/apt-get的用法类似)。日志大致如下:
Collecting package metadata (current_repodata.json): done
Solving environment: done
==> WARNING: A newer version of conda exists. <==
current version: 4.12.0
latest version: 23.1.0
Please update conda by running
$ conda update -n base -c defaults conda
## Package Plan ##
environment location: /root/miniconda3/envs/test
added / updated specs:
- python=3.8.16
The following packages will be downloaded:
package | build
---------------------------|-----------------
ca-certificates-2023.01.10 | hd43f75c_0 120 KB
certifi-2022.12.7 | py38hd43f75c_0 149 KB
libffi-3.4.2 | h419075a_6 135 KB
ncurses-6.4 | h419075a_0 1.1 MB
pip-22.3.1 | py38hd43f75c_0 2.7 MB
python-3.8.16 | h89984f6_2 12.4 MB
setuptools-65.6.3 | py38hd43f75c_0 1.1 MB
sqlite-3.40.1 | hf533066_0 1.4 MB
xz-5.2.10 | h998d150_1 444 KB
------------------------------------------------------------
Total: 19.7 MB
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-aarch64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-aarch64::_openmp_mutex-5.1-51_gnu
ca-certificates pkgs/main/linux-aarch64::ca-certificates-2023.01.10-hd43f75c_0
certifi pkgs/main/linux-aarch64::certifi-2022.12.7-py38hd43f75c_0
ld_impl_linux-aar~ pkgs/main/linux-aarch64::ld_impl_linux-aarch64-2.38-h8131f2d_1
libffi pkgs/main/linux-aarch64::libffi-3.4.2-h419075a_6
libgcc-ng pkgs/main/linux-aarch64::libgcc-ng-11.2.0-h1234567_1
libgomp pkgs/main/linux-aarch64::libgomp-11.2.0-h1234567_1
libstdcxx-ng pkgs/main/linux-aarch64::libstdcxx-ng-11.2.0-h1234567_1
ncurses pkgs/main/linux-aarch64::ncurses-6.4-h419075a_0
openssl pkgs/main/linux-aarch64::openssl-1.1.1s-h2f4d8fa_0
pip pkgs/main/linux-aarch64::pip-22.3.1-py38hd43f75c_0
python pkgs/main/linux-aarch64::python-3.8.16-h89984f6_2
readline pkgs/main/linux-aarch64::readline-8.2-h998d150_0
setuptools pkgs/main/linux-aarch64::setuptools-65.6.3-py38hd43f75c_0
sqlite pkgs/main/linux-aarch64::sqlite-3.40.1-hf533066_0
tk pkgs/main/linux-aarch64::tk-8.6.12-h241ca14_0
wheel pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
xz pkgs/main/linux-aarch64::xz-5.2.10-h998d150_1
zlib pkgs/main/linux-aarch64::zlib-1.2.13-h998d150_0
Downloading and Extracting Packages
libffi-3.4.2 | 135 KB | ######################################################################################################################## | 100%
setuptools-65.6.3 | 1.1 MB | ######################################################################################################################## | 100%
ca-certificates-2023 | 120 KB | ######################################################################################################################## | 100%
certifi-2022.12.7 | 149 KB | ######################################################################################################################## | 100%
ncurses-6.4 | 1.1 MB | ######################################################################################################################## | 100%
python-3.8.16 | 12.4 MB | ######################################################################################################################## | 100%
xz-5.2.10 | 444 KB | ######################################################################################################################## | 100%
pip-22.3.1 | 2.7 MB | ######################################################################################################################## | 100%
sqlite-3.40.1 | 1.4 MB | ######################################################################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate test
#
# To deactivate an active environment, use
#
# $ conda deactivate
这时,我们可以这样激活这个环境:
conda activate test
如图:
此时环境名已经由base
变成了test
。我们可以检查一下python的安装位置:
which python # /root/miniconda3/envs/test/bin/python。原来是base时路径为/root/miniconda3/bin/python
版本也已经发生了变化:
python --version # Python 3.8.16
pip的位置也是变化的:
which pip # /root/miniconda3/envs/test/bin/pip
如果你想切换到其它环境,只要:
# conda activate <环境名> 。以base为例
conda activate base
如果想退出conda,只要:
conda deactivate
如图,(base)
消失了,代表已经退出环境 :
设置默认环境
Windows 10
打开此电脑——属性——高级系统设置
,设置环境变量:
将地址添加到用户的环境变量Path
(有些电脑可能是PATH
):
其中,这个py3.7.6
是我想要激活的默认环境
设置完成后,点击确定
、应用
等按钮,重启Windows 10即可生效。之后进入power shell中,虽然前面没有类似(base)
这种标签,但其实已经生效了:
这种方案其实不是很优雅,因为它并没有充分地利用conda自身的特性,而是仅利用win10自己的特性。以后我再找找更好的方法,目前暂时凑合一下 (ฅ´ω`ฅ)
常用命令
conda create -n bioinf # 创建小环境(耐心等等)
conda info --envs # 查看小环境
conda activate [小环境名称] # 此时可以进入小环境。此后每次安装软件,均由conda自动安排位置。
conda remove -n XXX --all # 删除环境
conda install [软件名] # 安装软件
conda uninstall [软件名] # 卸载软件
conda install python=3.10 # 安装特别版本的python
你可以用conda
命令查看基本用法:
$ conda
usage: conda [-h] [-V] command ...
conda is a tool for managing and deploying applications, environments and packages.
Options:
positional arguments:
command
clean Remove unused packages and caches.
compare Compare packages between conda environments.
config Modify configuration values in .condarc. This is modeled after the git config command. Writes to the user .condarc file (/root/.condarc) by
default.
create Create a new conda environment from a list of specified packages.
help Displays a list of available conda commands and their help strings.
info Display information about current conda install.
init Initialize conda for shell interaction. [Experimental]
install Installs a list of packages into a specified conda environment.
list List linked packages in a conda environment.
package Low-level conda package utility. (EXPERIMENTAL)
remove Remove a list of packages from a specified conda environment.
uninstall Alias for conda remove.
run Run an executable in a conda environment.
search Search for packages and display associated information. The input is a MatchSpec, a query language for conda packages. See examples below.
update Updates conda packages to the latest compatible version.
upgrade Alias for conda update.
optional arguments:
-h, --help Show this help message and exit.
-V, --version Show the conda version number and exit.
conda commands available from other packages:
content-trust
env
功能还挺复杂的,就不一一说明了。
小结
作为一个重要的基础工具,还是有必要向刚刚开始接触Linux的小伙伴介绍的。按需食用即可!
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍
苯苯大大你好!,前言里CO( U)DA 11.6/Pytorch 2.0有个笔误喔
好的,谢谢提醒 (~ ̄▽ ̄)~