# Python

如果系统已经安装Python3,或不需要数据库支持Python3,则跳过该安装过程。

## 在线安装

CentOS7默认软件源中没有Python3,要安装Python3需首先安装epel软件源,非root账户下请使用 sudo yum install epel-release 。
```
[root@localhost ~] yum install epel-release
```

使用 yum 安装 Python3

```
[root@localhost ~] yum install python36
```

### 安装 Python 依赖库
使用 pip3 命令安装项目需要用到的 Python 依赖库
```
[root@localhost ~] pip3 install vg
[root@localhost ~] pip3 install numpy
[root@localhost ~] pip3 install matplotlib
[root@localhost ~] pip3 install shapely
[root@localhost ~] pip3 install networkx
[root@localhost ~] pip3 install jieba
[root@localhost ~] pip3 install short-text-sim -i http://dev.dp.sagacloud.cn:8082/repository/saga-pypi-group/simple --trusted-host dev.dp.sagacloud.cn
```
### 安装过程遇到的问题 



## 离线安装
离线安装Python3 是基于第三方的 Anaconda 来完成,首先在有网的机器把 Anaconda 下载下来官网地址
```
 https://www.anaconda.com/
```
选择个人开发版

![选择现在的环境](./img/python3_001.png)

点击下载
![点击下载](./img/python3_002.png)

点击下载会自定位到下载Anaconda的地方选择 Python3.7 
![下载Anaconda](./img/python3_003.png)

下载完成会显示一个.sh 的文件,它在linux 中是可以直接执行的
![.sh 的文件](./img/python3_004.png)

把.sh  的文件导入需要部署的服务器,例子 :文件放在/opt 下
![.sh 的文件](./img/python3_0005.png)

执行命令安装:bash
```
bash ~/opt/Anaconda3-2020.02-Linux-x86_64.sh
```
安装过程中需要手动点击 enter  来辅助继续安装
![.sh 的文件](./img/python3_006.png)

遇到Do you accept the license terms?输入yes 紧接着后面需要继续点击enter
![.sh 的文件](./img/python3_007.png)

下面的提示代表安装完成
![.sh 的文件](./img/python3_008.png)

### 配置环境变量
找到anaconda 安装的路径 例子是在~/ 下

![.sh 的文件](./img/python3_0010.png)


在profile 文件中添加环境变量,打开文件
```
sudo vi /etc/profile
```
输入上述命令后再输入i,会看到如下标识:
![.sh 的文件](./img/python3_009.png)

末尾添加:export PATH=
```
export PATH=~/anaconda3/bin:$PATH
```

最后重新载入配置文件,输入
```
source /etc/profile
```
### 验证安装结果
输入python会看到下面的提示代表安装成功或者输入python3
![.sh 的文件](./img/python3_0011.png)

或

![.sh 的文件](./img/python3_0012.png)



## 离线安装依赖包

在已经安装好python3的有网的服务器上,利用生成requirements.txt(记录所有依赖包及其精确的版本号)用pip 或pip3生成
```
pip3 freeze >requirements.txt
```
可以看到生成的.text 文件
![requirements.txt](./img/python3_0013.png)

读取.text 执行下载安装包,下载过程可能缓慢可以使用镜像下载,例子中如下
清华大型镜像: https://pypi.tuna.tsinghua.edu.cn/simple
```
pip3 download -d packages  -i https://pypi.tuna.tsinghua.edu.cn/simple   -r requirements.txt
```
不使用镜像方法 packages文件夹,如果没有会在当前路径下生成,对应储存依赖
```
pip3 download -d packages  -i  -r requirements.txt
```

处理使用 requirements.txt 还可以直接下载依赖,批量和单个下载差不多,下面例子单个下载 
```
pip3 download -d packages <package_name>
```

批量下载 把多个依赖包名直接放在后面即可
```
pip3 download -d packages <package_name>  <package_name> <package_name> <package_name>
```
下载完会生成一个packages名字的文件夹
![requirements.txt](./img/python3_0014.png)

文件中可以看到下载的依赖
![requirements.txt](./img/python3_0015.png)

把文件夹packages打包 
```
tar -czvf packages.tar.gz packages
```
把packages.tar.gz和 requirements.txt 文件一同导入没有网络的私有服务 解压packages.tar.gz
tar -xzvf packages.tar.gz

解压后的 packages 和requirements.txt在同一个目录下 执行安装
```
pip3 install --no-index --find-links=./packages -r requirements.txt
```
或单个、多个指定名称进行安装
```
pip3 install --no-index --find-links= ./packages   <package_name>
```

安装完成可以测试一下程序 比如进入python3环境 测试依赖是否存在 例子中添加的依赖 vg ,没有报错代表依赖安装成功

![requirements.txt](./img/python3_0016.png)