如何在centos7上安装miniconda,以及在miniconda中创建特定版本的python环境?
1、anaconda工具介绍
Anaconda 是一个用于数据科学、机器学习和科学计算的开源软件,它集成了许多常用的工具、库和软件包,以便科学家、数据分析师和开发人员能够更轻松地进行数据分析、建模、实验和开发。
主要功能和组件包括:
- 包管理器 Conda: Anaconda 自带了一个包管理器 Conda,它可以用来安装、更新、卸载软件包,并能够在虚拟环境中隔离不同的项目所需的依赖关系,从而避免版本冲突问题。
- 虚拟环境: Anaconda 允许你创建独立的 Python 环境,每个环境可以拥有自己的包集合和依赖,这对于管理不同项目的依赖非常有用。
- 科学计算库: Anaconda 预装了许多常用的科学计算和数据处理库,如 NumPy、Pandas、SciPy 等。
- 可视化库: 它包含了用于数据可视化的库,如 Matplotlib、Seaborn 和 Plotly。
- 机器学习库: Anaconda 包含了用于机器学习和深度学习的库,如 Scikit-Learn、TensorFlow 和 PyTorch。
- 数据分析工具: Jupyter Notebook 是一个交互式的数据分析和可视化工具,它允许你在浏览器中编写和执行代码,并将代码、可视化和文本组合在一起。
- 数据集和示例: Anaconda 发行版附带了一些示例数据集和示例代码,这可以帮助你入门和实践。
- 集成开发环境 (IDE): Anaconda Navigator 是一个可视化的用户界面,用于管理 Conda 环境、安装包和启动 Jupyter Notebook。
本文用到的就是使用这个工具,创建python特定版本的环境,在python中安装特定的依赖,然后直接迁移到其他的主机上使用。
miniconda是anaconda的精简的版本,包含的软件包比较少,包含基本的python环境,由于本文中主要是用来创建python环境,所以使用miniconda即可
2、miniconda工具安装
2.1、下载安装包
通过以下的地址下载miniconda程序包:
https://docs.conda.io/en/latest/miniconda.html
选择特定版本的安装器进行下载
2.2、上传到服务器
下载到本地之后,上传到服务器上
增加文件的可执行权限
[root@centos7 ~]# ls -ltr
total 100804
-rw-r--r-- 1 root root 103219356 Aug 18 02:02 Miniconda3-py311_23.5.2-0-Linux-x86_64.sh
[root@centos7 ~]# chmod +x Miniconda3-py311_23.5.2-0-Linux-x86_64.sh
[root@centos7 ~]# ls -ltr
total 100804
-rwxr-xr-x 1 root root 103219356 Aug 18 02:02 Miniconda3-py311_23.5.2-0-Linux-x86_64.sh
[root@centos7 ~]#
2.3、安装miniconda
执行下面的命令进行安装
./Miniconda3-py311_23.5.2-0-Linux-x86_64.sh
出现下面的部分,直接“回车”
这部分的作用是,读license协议信息
[root@centos7 ~]# ./Miniconda3-py311_23.5.2-0-Linux-x86_64.sh
Welcome to Miniconda3 py311_23.5.2-0
In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>>
直接空格,下一页,到最后即可
输入“yes”,同意
安装路径确认,点击“回车”,默认即可
回车之后,出现安装过程
输入“yes”,回车,完成初始化
安装完成之后,开启一个新的终端
会提示,已经在base的环境里面了
查看conda的版本
(base) [root@centos7 ~]# conda --version
conda 23.5.2
(base) [root@centos7 ~]#
出现以上的信息表示,conda工具安装成功。
3、conda工具使用
3.1、创建python环境
执行以下的命令,安装特定版本的python环境
conda create --name python3.11 python=3.11
--name 参数是创建的环境名称
python=3.11是指定的python版本
执行过程:
(base) [root@centos7 ~]# conda create --name python3.11 python=3.11
Collecting package metadata (current_repodata.json): done
Solving environment: done
==> WARNING: A newer version of conda exists. <==
current version: 23.5.2
latest version: 23.7.2
Please update conda by running
$ conda update -n base -c defaults conda
Or to minimize the number of packages updated during conda update use
conda install conda=23.7.2
## Package Plan ##
environment location: /root/miniconda3/envs/python3.11
added / updated specs:
- python=3.11
The following packages will be downloaded:
package | build
---------------------------|-----------------
openssl-3.0.10 | h7f8727e_0 5.2 MB
pip-23.2.1 | py311h06a4308_0 3.3 MB
setuptools-68.0.0 | py311h06a4308_0 1.2 MB
------------------------------------------------------------
Total: 9.7 MB
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-5.1-1_gnu
bzip2 pkgs/main/linux-64::bzip2-1.0.8-h7b6447c_0
ca-certificates pkgs/main/linux-64::ca-certificates-2023.05.30-h06a4308_0
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.38-h1181459_1
libffi pkgs/main/linux-64::libffi-3.4.4-h6a678d5_0
libgcc-ng pkgs/main/linux-64::libgcc-ng-11.2.0-h1234567_1
libgomp pkgs/main/linux-64::libgomp-11.2.0-h1234567_1
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-11.2.0-h1234567_1
libuuid pkgs/main/linux-64::libuuid-1.41.5-h5eee18b_0
ncurses pkgs/main/linux-64::ncurses-6.4-h6a678d5_0
openssl pkgs/main/linux-64::openssl-3.0.10-h7f8727e_0
pip pkgs/main/linux-64::pip-23.2.1-py311h06a4308_0
python pkgs/main/linux-64::python-3.11.4-h955ad1f_0
readline pkgs/main/linux-64::readline-8.2-h5eee18b_0
setuptools pkgs/main/linux-64::setuptools-68.0.0-py311h06a4308_0
sqlite pkgs/main/linux-64::sqlite-3.41.2-h5eee18b_0
tk pkgs/main/linux-64::tk-8.6.12-h1ccaba5_0
tzdata pkgs/main/noarch::tzdata-2023c-h04d1e81_0
wheel pkgs/main/linux-64::wheel-0.38.4-py311h06a4308_0
xz pkgs/main/linux-64::xz-5.4.2-h5eee18b_0
zlib pkgs/main/linux-64::zlib-1.2.13-h5eee18b_0
Proceed ([y]/n)?
输入“y”,点击回车,进入安装的过程,直到安装完成
Proceed ([y]/n)? y
Downloading and Extracting Packages
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate python3.11
#
# To deactivate an active environment, use
#
# $ conda deactivate
(base) [root@centos7 ~]#
执行下面的命令,查看当前的环境
(base) [root@centos7 ~]# conda env list
# conda environments:
#
base * /root/miniconda3
python3.11 /root/miniconda3/envs/python3.11
(base) [root@centos7 ~]#
python3.11的环境已经存在了。
3.2、激活虚拟环境
虚拟环境的好处就是,每个环境可以有不同的工具的版本,依赖,可以进行特定的测试,并且不受影响。
通过执行下面的命令,进入到刚刚创建的python3.11环境中
(base) [root@centos7 ~]# conda activate python3.11
(python3.11) [root@centos7 ~]#
(python3.11) [root@centos7 ~]# python -V
Python 3.11.4
(python3.11) [root@centos7 ~]#
这样,就进入了虚拟的环境中了。
退出这个环境,执行下面的命令
(python3.11) [root@centos7 ~]# conda deactivate
(base) [root@centos7 ~]#
(base) [root@centos7 ~]#
就回到了之前的环境中了。
3.3、在虚拟环境中,安装依赖包
本文因为后面会用到ansible,所以,直接在这个环境中,安装ansible的包
进入虚拟环境
conda activate python3.11
执行下面的命令,安装ansible的包
pip3 install ansible
安装之后,执行下面的命令
(python3.11) [root@centos7 ~]# ansible --version
ansible [core 2.15.3]
config file = None
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /root/miniconda3/envs/python3.11/lib/python3.11/site-packages/ansible
ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
executable location = /root/miniconda3/envs/python3.11/bin/ansible
python version = 3.11.4 (main, Jul 5 2023, 13:45:01) [GCC 11.2.0] (/root/miniconda3/envs/python3.11/bin/python)
jinja version = 3.1.2
libyaml = True
出现以上的信息,说明安装成功。
4、导出、导入虚拟环境
刚刚创建的python3.11的环境,包含了python3.11运行的全部信息,可以打包,然后在其他的环境运行
进入env目录
(python3.11) [root@centos7 ~]# cd /root/miniconda3/envs/
(python3.11) [root@centos7 envs]# ls
python3.11
(python3.11) [root@centos7 envs]#
对python3.11目录进行打包
tar -zcf python3.11.tar.gz python3.11
打包完成后,可以上传到其他的主机中
[root@nccztsjb-node-23 ~]# ls -l python3.11.tar.gz
-rw-r--r-- 1 root root 156633415 Aug 18 14:44 python3.11.tar.gz
[root@nccztsjb-node-23 ~]#
解压缩
[root@nccztsjb-node-23 ~]# tar -zxf python3.11.tar.gz
[root@nccztsjb-node-23 ~]# ls -l python3.11
total 40
drwxr-xr-x 2 root root 4096 Aug 18 14:40 bin
drwxr-xr-x 2 root root 4096 Aug 18 14:32 compiler_compat
drwxr-xr-x 2 root root 4096 Aug 18 14:32 conda-meta
drwxr-xr-x 9 root root 4096 Aug 18 14:32 include
drwxr-xr-x 16 root root 4096 Aug 18 14:32 lib
drwxr-xr-x 3 root root 4096 Aug 18 14:32 man
drwxr-xr-x 10 root root 4096 Aug 18 14:32 share
drwxr-xr-x 3 root root 4096 Aug 18 14:32 ssl
drwxr-xr-x 3 root root 4096 Aug 18 14:32 x86_64-conda_cos7-linux-gnu
drwxr-xr-x 3 root root 4096 Aug 18 14:32 x86_64-conda-linux-gnu
[root@nccztsjb-node-23 ~]#
进入python3.11目录,执行python命令
[root@nccztsjb-node-23 python3.11]# bin/python3 -V
Python 3.11.4
[root@nccztsjb-node-23 python3.11]#
OK,这样,在另外的环境,就有了python环境了。
不过,执行ansible命令,报错了:
[root@nccztsjb-node-23 python3.11]# bin/ansible
-bash: bin/ansible: /root/miniconda3/envs/python3.11/bin/python: bad interpreter: No such file or directory
[root@nccztsjb-node-23 python3.11]# bin/ansible --version
-bash: bin/ansible: /root/miniconda3/envs/python3.11/bin/python: bad interpreter: No such file or directory
[root@nccztsjb-node-23 python3.11]#
因为,这里的python解释器的地址和原来的主机环境已经发生变化了
修改ansible中的python解释器的位置
pythonpath=`pwd`
sed -i "s|/root/miniconda3/envs/python3.11/bin/python|$pythonpath/bin/python|" bin/ansible
再执行命令
[root@nccztsjb-node-23 python3.11]# bin/ansible --version
ansible [core 2.15.3]
config file = None
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /root/python3.11/lib/python3.11/site-packages/ansible
ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
executable location = bin/ansible
python version = 3.11.4 (main, Jul 5 2023, 13:45:01) [GCC 11.2.0] (/root/python3.11/bin/python)
jinja version = 3.1.2
libyaml = True
OK,成功,这样就成功的在其他的主机上,安装了python环境。
并且针对环境中的命令进行了解释器的调整,解决了命令执行的问题。