Linux(CentOS7)安装Python3和pip3并为pip换源

centos7 自带有 python,版本是python2.7

接下来我们手动安装python3,并且配置后可以并存使用。


1.首先,你要知道系统现在的python的位置在哪儿:
[root@root ~]# whereis python
python: /usr/bin/python2.7 /usr/bin/python /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
可以知道我们的python在 /usr/bin目录中
[root@root ~]# cd /usr/bin/
[root@root bin]# ll python*
lrwxrwxrwx. 1 root root 7 2月 7 09:30 python -> python2
lrwxrwxrwx. 1 root root 9 2月 7 09:30 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 8月 4 2017 python2.7
可以看到,python指向的是python2,python2指向的是python2.7,因此我们可以装个python3,然后将python指向python3,然后python2指向python2.7,那么两个版本的python就能共存了。

2.因为我们要安装python3,所以要先安装相关包,用于下载编译python3:
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
运行了以上命令以后,就安装了编译python3所用到的相关依赖


3.默认的,centos7也没有安装pip,不知道是不是因为我安装软件的时候选择的是最小安装的模式。
#运行这个命令添加epel扩展源
yum -y install epel-release

#安装pip
yum install python-pip

4.用pip装wget
pip install wget

5.用wget下载python3的源码包(评论区网友提供了淘宝镜像,替换了官网下载python3,提高下载速度)
wget http://npm.taobao.org/mirrors/python/3.7.5/Python-3.7.5.tar.xz

6.编译python3源码包
#解压
xz -d Python-3.7.5.tar.xz
tar -xf Python-3.7.5.tar

#进入解压后的目录,依次执行下面命令进行手动编译
cd Python-3.7.5
./configure prefix=/usr/local/python3
make && make install

# 如果出现can't decompress data; zlib not available这个错误,则需要安装相关库
#安装依赖zlib、zlib-devel
yum install zlib zlib
yum install zlib zlib-devel
如果最后没提示出错,就代表正确安装了,在/usr/local/目录下就会有python3目录


7.添加软链接
#将原来的链接备份
mv /usr/bin/python /usr/bin/python.bak

#添加python3的软链接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python

#测试是否安装成功了
python -V

8.更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用
vi /usr/bin/yum
把#! /usr/bin/python修改为#! /usr/bin/python2

vi /usr/libexec/urlgrabber-ext-down
把#! /usr/bin/python 修改为#! /usr/bin/python2
启动python2:

 

启动python3:

 

附录:

关于,如何下载python3的pip模块,以及pip2和pip3的如何兼容使用,可以看我的另一篇文章:

下载pip模块以及pip2和pip3共存问题
————————————————
版权声明:本文为CSDN博主「大蛇王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/t8116189520/article/details/81976755

 

====================================================================

 

文章目录
安装Python3和pip3
更换pip为阿里源
常用源
临时更改
永久更改

当前CentOS7系统自带了python2.7.5,因为yum会用到python2,所以不能删除,此次安装了python3之后就保持两个版本长期共存吧
本次安装采用的是下载python源码再编译的方式

下面的操作,按照步骤来就可以了,不要在中途cd 到别的文件目录下,要想查看效果可以用 ls加上对应的目录,不需要切换进去。

安装Python3和pip3
首先进行yum更新

yum update -y
1
接着安装必要的软件

yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel libffi-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make
1
查看现有python命令,这3个文件依赖关系很明显就可以看到

ls -l /usr/bin/python*

# 结果如下
lrwxrwxrwx. 1 root root 7 1月 22 18:57 /usr/bin/python -> python2
lrwxrwxrwx. 1 root root 9 1月 22 18:57 /usr/bin/python2 -> python2.7
-rwxr-xr-x. 1 root root 7144 11月 17 06:23 /usr/bin/python2.7
1
2
3
4
5
6
下载python源码压缩包,需提前安装wget工具

yum install -y wget

wget https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tgz
1
2
3
等待下载完成之后会在当前目录下出现一个tgz包,命令解压这个包到当前目录就可以

tar -xvzf Python-3.8.7.tgz
1
进入解压后的目录,执行编译前的configure操作,提前安装gcc编译器

yum install gcc

cd Python-3.8.7 && ./configure --with-ssl --prefix=/usr/local/python3
1
2
3
稍微解释执行./configure 的命令,目的就是把python的安装目录指定一下,这样的话,里面的一些bin目录、lib目录就都会存放在这个目录下面。如果不指定这个安装目录的话,最后python的安装文件将分散到linux的默认目录,不在一块。我们指定安装目录,以后卸载的话直接删除目录就可以干净卸载了。

编译源码,在Python-3.8.7目录执行以下命令

make && make install
1
编译成功后提示如下信息,setuptools和pip都已经部署成功

Processing /tmp/tmpl3pm5lx_/setuptools-49.2.1-py3-none-any.whl
Processing /tmp/tmpl3pm5lx_/pip-20.2.3-py2.py3-none-any.whl
Installing collected packages: setuptools, pip
Successfully installed pip-20.2.3 setuptools-49.2.1
1
2
3
4
又是一大堆代码,执行完毕之后,我们就可以查看/usr/local/python3/目录了

ls -l /usr/local/python3

# 结果如下
drwxr-xr-x. 2 root root 220 1月 22 19:36 bin
drwxr-xr-x. 3 root root 23 1月 22 19:30 include
drwxr-xr-x. 4 root root 62 1月 22 19:36 lib
drwxr-xr-x. 3 root root 17 1月 22 19:30 share
1
2
3
4
5
6
7
接下来我们还有一点善后工作——创建python3和pip3的软连接

ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
1
2
3
此时在/usr/bin/目录下,查看文件关系如下

ls -l /usr/bin/python*

# 结果如下
lrwxrwxrwx. 1 root root 7 1月 22 18:57 /usr/bin/python -> python2
lrwxrwxrwx. 1 root root 9 1月 22 18:57 /usr/bin/python2 -> python2.7
-rwxr-xr-x. 1 root root 7144 11月 17 06:23 /usr/bin/python2.7
lrwxrwxrwx. 1 root root 32 1月 22 20:42 /usr/bin/python3 -> /usr/local/python3/bin/python3.8
1
2
3
4
5
6
7
升级pip3

pip3 install --upgrade pip
1
更换pip为阿里源
常用源
清华源
https://pypi.tuna.tsinghua.edu.cn/simple
pypi.tuna.tsinghua.edu.cn
阿里源
https://mirrors.aliyun.com/pypi/simple/
mirrors.aliyun.com
豆瓣源
http://pypi.douban.com/simple
pypi.douban.com
我在这里以阿里源为例

临时更改
pip install <package> -i https://mirrors.aliyun.com/pypi/simple
pip install <package> -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
1
2
永久更改
首先创建.pip文件夹

mkdir ~/.pip
1
创建pip.conf配置文件

touch ~/.pip/pip.conf
1
修改pip.conf配置文件

vim ~/.pip/pip.conf

# 文件内容如下
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
1
2
3
4
5
6
7
至此,大功告成了!!!

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树预备知识安装Python58126 人正在系统学习中
————————————————
版权声明:本文为CSDN博主「Amosヾ」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44924544/article/details/112993067

 

==========================================================

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel libffi-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make

因为我们要安装python3,所以要先安装相关包,用于下载编译python3:
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
运行了以上命令以后,就安装了编译python3所用到的相关依赖


————————————————

 

WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/10151>
distutils: /usr/local/python3.10.1/include/python3.10/UNKNOWN
sysconfig: /usr/local/python3/Python-3.10.1/Include/UNKNOWN
WARNING: Additional context:
user = False
home = None
root = '/'
prefix = None
Looking in links: /tmp/tmph2hzr8z0
Processing /tmp/tmph2hzr8z0/setuptools-58.1.0-py3-none-any.whl
Processing /tmp/tmph2hzr8z0/pip-21.2.4-py3-none-any.whl
Installing collected packages: setuptools, pip
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/10151>
distutils: /usr/local/python3.10.1/include/python3.10/setuptools
sysconfig: /usr/local/python3/Python-3.10.1/Include/setuptools
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/10151>
distutils: /usr/local/python3.10.1/include/python3.10/pip
sysconfig: /usr/local/python3/Python-3.10.1/Include/pip
WARNING: The scripts pip3 and pip3.10 are installed in '/usr/local/python3.10.1/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-21.2.4 setuptools-58.1.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[root@localhost Python-3.10.1]# ping localhost

 

============================================================================

 

 

## 离线安装Python3

1.安装依赖环境

```sh

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

```

2.下载安装包

可以选择官网直接下载或者wget命令下载

* 官网(<https://www.python.org/)下载,点击downloads>

* wget:

wget https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tgz

3.解压

```sh

mkdir -p /usr/local/python3.10

tar -zxvf Python-3.9.0.tgz

```

4.编译安装

```sh

cd Python-3.10.1

./configure --prefix=/usr/local/python3.10

make && make install

```

5.配置环境变量

```sh

vi /etc/profile

export PYTHON_HOME=/usr/local/python3.10

export PATH=${PYTHON_HOME}/bin:$PATH

source /etc/profile

```

创建软连接

查看python指向:

```sh

ls -l /usr/bin | grep python

```

创建/usr/bin/python3

```sh

ln -s /usr/local/bin/python3.10/bin/python3 /usr/bin/python3 # 创建python3软连接

rm /usr/bin/python

ln -s /usr/bin/python3 /usr/bin/python

```

## 离线安装、迁移第三方模块

1.第三方模块下载

* 第三方模块下载可以直接下载whl文件,直接使用pip3 install

* 可在联网机器下载,迁移到离线服务器安装

下面主要介绍在在联网机器下载,迁移到离线服务器安装方式

如果新安装某一个模块,可以直接下载下来

```sh

pip3 download xxx -d /tmp/packages/

```

默认情况download是最新版本模块,但需要下载指定模块版本,例如:

```sh

pip3 download kafka-python==2.0.2 -d /tmp/packages/

```

* 查看已安装模块

```sh

pip3 list

Package Version

------------------ ---------

certifi 2021.10.8

charset-normalizer 2.0.9

idna 3.3

kafka-python 2.0.2

pip 21.2.4

pydruid 0.6.2

requests 2.26.0

setuptools 58.1.0

urllib3 1.26.7

```

* 将pip3 list的信息生成文档

```sh

pip3 freeze > requirements.txt

```

* 将requirement.txt文档中列出的模块信息下载到指定目录

```sh

# 第一种方式,推荐使用

pip3 download -r requirements.txt -d /tmp/packages/

# 第二种方式

pip3 install --download /tmp/packages -r requirements.txt

```

* 将下载好的模块copy到离线服务器

```sh

#是什么格式就安装什么格式的文件

pip3 install xxx.tar.gz

pip3 install xxx.whl

pip3 install xxx.xx

```

批量安装多个包和依赖包,所有文件放到一个目录中,进入这个目录执行命令

```sh

pip3 install ./*

```

issues:

issue1:pip3 安装依赖 ModuleNotFoundError: No module named '_ctypes'

解决方案

1.安装libffi-devel

```sh

yum install libffi-devel

```

2.重新编译安装

```sh

./configure --prefix=/usr/local/python3 --enable-optimizations

make && make install

```

---

issue2:No matching distribution found for request

```sh

Collecting request

Could not fetch URL https://pypi.python.org/simple/request/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:719) - skipping

Could not find a version that satisfies the requirement request (from versions: )

No matching distribution found for request

```

分析:网络原因导致

解决方案

```sh

pip3 install requests -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

```

issue3:pip3 install xxx.tar.gz 报连接错误

```sh

tar -zxvf xxx.tar.gz

cd xxx

python3 setup.py install

```
————————————————
版权声明:本文为CSDN博主「import80」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32613771/article/details/122160440

posted @ 2022-06-21 13:43  闻道者  阅读(5610)  评论(0编辑  收藏  举报