学会这个,再也不怕Python环境安装 (CentOS 6 Python2.7 & Python3.7)

简介: 学会这个,再也不怕Python环境安装 (CentOS 6 Python2.7 & Python3.7)

为什么举例来说这个安装过程呢, 因为现在开发部署的主流linux就是CentOS,而大部分人目前所使用的版本是CentOS Linux release 7.x

该系统已经自带集成了 Python2.7版本及pip,如果没有也可以通过yum方式安装。而CentOS 6则自带Python2.6.6 且没有pip。而现行大多数的Python开源项目都要求Python在2.7及以上,所以如果你要部署项目的机器是CentOS 6, 则需要升级Python版本并安装pip。看起来就这点东西,但是在执行过程中会遇到许多问题,接下来一步一步给你讲解,让你从根上理解Python多环境安装。


没别的需求,只想安装pip

针对pip的安装普遍使用2种方式,一种是yum安装,一种是源码包安装,这个直接在百度搜索也可以搜到一大把有用的内容。这里2种方式都分别介绍一下


centos7

如果你的机器上没有pip,可以执行如下命令

yum -y install python-pip

如果安装失败,根据提示解决对应问题,有的人可能需要先安装epel-release

yum -y install epel-release
yum -y install python-pip

centos6

cd /opt/
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
tar -xzvf pip-9.0.1.tar.gz
cd pip-9.0.1
python setup.py install

最新方法(并不适用所有人)

这也是官方文档中说明的方法, 但是对于某些操作系统及Python版本不会成功

pip官方文档

# 下载安装脚本
cd /opt/
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# 运行安装脚本
python get-pip.py

注意:用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本

 python3 get-pip.py    # 运行安装脚本。pip关联到了python3
 python2 get-pip.py    # 运行安装脚本。pip关联到了python2

多版本Python安装共存

在看下文之前,建议先观看==>只有理解了虚拟环境才算真正掌握 Python 环境

这里选用centos6来做讲解,会更有代表性,会有各种各样的问题发生,当然你也可能不会发生,这和你执行的顺序有关。

前文已经说过,centos6 默认自定了 Python2.6 版本,那么现在直接动手装一个 Python2.7  的版本来做演示。 你问我为什么不直接上Python3.7+,不为什么,就是想搞事情(因为公司项目不支持python3,且必须是python2.7以上,后续升级3.7)话不多说,看下面命令:

# step 1
cd /opt/
wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 #下载python 版本包
tar -jxvf Python-2.7.3.tar.bz2 # 解压文件
# step 2
cd Python-2.7.3  # 进入文件夹
# 检查安装平台属性,系统是否有编译时所需要额库,以及库的版本是否满足编译需要
./configure 
make all &&  make install && make clean && make distclean  # 编译安装及清理
# step 3
mv /usr/bin/python /usr/bin/python2.6.6  # 移动备份原Python 指令
ln -s /usr/local/bin/python2.7 /usr/bin/python #设置Python bin命令的软连接指向 

此时输入Python -V,会显示如下结果

[root@alpha-silvergrd-107-13 Python-2.7.3]# python -V
Python 2.7.3

然而因为我是先实践了之后才来写文章的,所以有些命令我没执行, 为了后面方便演示,我说下我本机的情况, step 3中我执行的是

ln -s /usr/local/bin/python2.7 /usr/bin/python2.7,所有我的效果如图

17201e6eb4669d5a~tplv-t2oaga2asx-zoom-in-crop-mark_4536_0_0_0.png

这个地方需要我解释吗?各位看官问问身边的同事就好或者百度就行,就不赘述了。


注意

如果已经先执行了上一个标题内容 #只想安装pip,那么你就有麻烦了,如果没有,那你就没什么大麻烦!!


先安装了pip

因为你之前已经安装了pip, 而那个时候你系统的Python版本是2.6,所以pip被关联上了Python2.6, 此时如果你使用这个命令python2.7 -m pip install scrapy,会报如下错误,这是因为Python2.7没有与之关联的匹配pip

17201f5649d6cc9e~tplv-t2oaga2asx-zoom-in-crop-mark_4536_0_0_0.png

python -m pip install scrapy则不会

cd /opt/
cd pip-9.0.1
python2.7 setup.py install # pip关联到Python2.7上

注意:用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本

再次执行就没有此错误了

没有安装pip,现在想安装pip

cd /opt/
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
tar -xzvf pip-9.0.1.tar.gz
cd pip-9.0.1
# 2者选其一,看情况
python2.7 setup.py install(python setup.py install)

如何使用

现在多版本Python和pip 都已经安装好了,那么如何使用它来下载一个包呢?

这里以安装一个scrapy为例

python2.7 -m pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
# or
python -m pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
# python2.7: 使用的语言版本
# -m: 将模块当作脚本运行
# -i:使用镜像源


各种报错如何解决

因为不是边操作边写的文章,其实在执行的过程中遇到了挺多错误的,但是这些错误我也不太记得是在哪些步骤发生的了,所有统一归类在这里,如果正好你遇到了,可以直接照着解决,centos6问题较多,centos7不会有这么多问题。

这里以centos6为例,因为问题多。


No module named setuptools

wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
python2.7 ez_setup.py --insecure

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available

在./configure过程中,如果没有加上–with-ssl参数时,默认安装的软件涉及到ssl的功能不可用,刚好pip过程需要ssl模块,而由于没有指定,所以该功能不可用。

解决办法是重新对python2.7.3进行编译安装,用以下过程来实现编译安装:

# 查看openssl安装包,发现缺少openssl-devel包
rpm -aq|grep openssl-devel
# yum安装openssl-devel 
yum install openssl-devel -y 
# 查看安装结果 
rpm -aq|grep openssl 
# 重新对python2.7进行编译安装,用一下过程来实现编译安装
cd /opt/Python2.7.3
./configure --with-ssl #添加ssl选项
make all &&  make install && make clean && make distclean

No module named _sqlite3

yum install sqlite-devel
cd /opt/Python2.7.3
./configure
make all &&  make install && make clean && make distclean

yum 不可用

vi /usr/bin/yum

开头的第一行内容#!/usr/bin/python使用了python,如果你的python版本变了,也就是python -V不是最初的内容了,你需要把这个内容改为原先的python内容,比如

mv /usr/bin/python /usr/bin/python999

那么#!/usr/bin/python就要改为#!/usr/bin/python999。 当然你也可以找匹配当前python版本的yum源文件内容进行替换,但不建议(麻烦)


(不建议)yum不可用的情况(/lib64/libc.so.6:version GLIBC_2.14)

参考:Linux/Centos下/lib64/libc.so.6: version `GLIBC_2.14' not found

但不建议,这里对系统层面的改动比较大,如果是生产服务器,很难预估风险。


(建议)yum不可用的情况(No module named yum)

通常这种情况可以采用如下方式修复,重新下载系统原有的包进行安装修复

# 下载对应操作系统rpm包
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/python-2.6.6-66.el6_8.x86_64.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/python-devel-2.6.6-66.el6_8.x86_64.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/python-libs-2.6.6-66.el6_8.x86_64.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/python-pycurl-7.19.0-9.el6.x86_64.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/python-setuptools-0.6.10-4.el6_9.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/python-urlgrabber-3.9.1-11.el6.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/rpm-python-4.8.0-59.el6.x86_64.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-utils-1.1.30-41.el6.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-41.el6.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-plugin-protectbase-1.1.30-41.el6.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-plugin-aliases-1.1.30-41.el6.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-utils-1.1.30-41.el6.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-utils-1.1.30-41.el6.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-utils-1.1.30-41.el6.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-utils-1.1.30-41.el6.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm
wget http://mirrors.ustc.edu.cn/centos/6.10/os/x86_64/Packages/yum-utils-1.1.30-41.el6.noarch.rpm
# 安装(依赖报错的话缺什么下什么)
rpm -Uvh --replacepkgs rpm-python*.rpm
rpm -Uvh --replacepkgs yum*.rpm
# or

No module named zlib

yum install zlib
# 重新编译Python
./configure --with-zlib
make all &&  make install && make clean && make distclean

pip is a package and cannot be directly executed

pip install -U pip
pip install -U setuptools
pip install wheel

总结

有些内容没有细讲也有部分忘记了,可能每个人遇到的问题也不同,我挑了个遇到问题最多的来说,上文中已经共存了Python2.6和Python2.7两个版本,那在这基础上再添加其他的Python版本也是同样的操作再来一遍,依次重复操作。唯一有变化的就是包下载的不同。

那么如果你有疑问可以在底部留言评论,我会一一解答,顺便也回忆一下我在这个过程中忘记了的事。

其实还可以使用venv、conda来解决这类问题,但是不想依赖第三方工具,所以没研究,后续会补充这方面文章。

目录
相关文章
|
2月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
582 69
|
28天前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
569 2
|
21天前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
236 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
2月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
285 78
|
28天前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
319 16
|
3月前
|
Linux 网络安全 Apache
针对在Centos/Linux安装Apache过程中出现的常见问题集锦
以上每个问题的解决方案应深入分析错误日志、系统消息和各种配置文件,以找到根本原因并加以解决。务必保持系统和Apache软件包更新到最新版本,以修复已知的bugs和安全漏洞。安装和管理Web服务器是一项需要细致关注和不断学习的任务。随着技术的发展,推荐定期查看官方文档和社区论坛,以保持知识的更新。
194 80
|
2月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
213 10
|
2月前
|
运维 网络协议 Linux
CentOS下Bind服务的安装与故障排查
通过以上的步骤,您应该能够在CentOS系统上安装并配置BIND DNS服务,并进行基本的故障排查。
219 0
|
2月前
|
存储 Ubuntu Linux
安卓手机免root安装各种Linux系统:Ubuntu, Centos,Kali等
此外还可以安装Slackware、Archstrike等系统,还可以通过github查找方法安装更多有趣的东西。 昨日小编就是通过Termux安装的Kali Linux工具包。
|
关系型数据库 MySQL 数据库
【100天精通python】Day32:使用python操作数据库_MySQL下载、安装、配置、使用实战
【100天精通python】Day32:使用python操作数据库_MySQL下载、安装、配置、使用实战
153 0