如何在centos7上安装miniconda,以及在miniconda中创建特定版本的python环境?

发布时间 2023-08-18 15:37:42作者: Zhai_David

 

1、anaconda工具介绍

 

Anaconda 是一个用于数据科学、机器学习和科学计算的开源软件,它集成了许多常用的工具、库和软件包,以便科学家、数据分析师和开发人员能够更轻松地进行数据分析、建模、实验和开发。

主要功能和组件包括:

  1. 包管理器 Conda: Anaconda 自带了一个包管理器 Conda,它可以用来安装、更新、卸载软件包,并能够在虚拟环境中隔离不同的项目所需的依赖关系,从而避免版本冲突问题。
  2. 虚拟环境: Anaconda 允许你创建独立的 Python 环境,每个环境可以拥有自己的包集合和依赖,这对于管理不同项目的依赖非常有用。
  3. 科学计算库: Anaconda 预装了许多常用的科学计算和数据处理库,如 NumPy、Pandas、SciPy 等。
  4. 可视化库: 它包含了用于数据可视化的库,如 Matplotlib、Seaborn 和 Plotly。
  5. 机器学习库: Anaconda 包含了用于机器学习和深度学习的库,如 Scikit-Learn、TensorFlow 和 PyTorch。
  6. 数据分析工具: Jupyter Notebook 是一个交互式的数据分析和可视化工具,它允许你在浏览器中编写和执行代码,并将代码、可视化和文本组合在一起。
  7. 数据集和示例: Anaconda 发行版附带了一些示例数据集和示例代码,这可以帮助你入门和实践。
  8. 集成开发环境 (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环境。

 

并且针对环境中的命令进行了解释器的调整,解决了命令执行的问题。