CentOS 7 安装 Python 3

2023-11-20


前言

推荐在线安装。但工作需要,服务器不能连接外网,因此需要离线安装。


操作系统说明

操作系统:CentOS Linux release 7.4.1708 (Core)
操作系统安装包:CentOS-7-x86_64-Minimal-1708.iso

在线安装

Python版本:3.6.8
pip版本:9.0.3
virtualenv版本:20.4.2
(截至 2021年2月7日)

安装 Python 3 (默认包含 pip)

yum install python3 -y

安装完成后,验证安装情况

python3 -V
pip3 -V

升级 pip 版本(可不升级)

python3 -m pip install --upgrade pip

安装 virtualenv

pip3 install virtualenv -i https://pypi.douban.com/simple/

建立软连接

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

安装完成后,验证安装情况

virtualenv --version

PS : 如果安装研发环境中对应的 Python 版本,请 参考


离线安装

环境&组件说明

Python版本:3.8.5
pip版本:20.1.1
virtualenv版本:20.4.2

组件用途说明

pip :是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。
virtualenv:就是用来为一个应用创建一套“隔离”的Python运行环境。


安装步骤

1、安装依赖:gcc、gcc-c++、zlib-devel、openssl-devel。注意:一定要先安装gcc,再安装gcc-c++。然后再安装其他,其他的没有先后顺序。
2、安装 Python 环境。

详细步骤

准备安装(搜集&下载)

1、查看 操作系统是否安装 gcc、gcc-c++ :
查看是否安装 gcc 的命令:

gcc -v

查看是否安装 gcc-c++ 的命令:

g++ -v

2、(如果已经安装 gcc ,忽略此步骤。)在 CentOS 7 的安装镜像 (CentOS-7-x86_64-Everything-1708.iso 中肯定有),packages 目录,找到安装 gcc 相关的 rpm 包,并放到一个文件夹里(命名1),列表如下(注意:不同版本的操作系统,对应的rpm版本也不同):

序号 安装包
1 cpp-4.8.5-28.el7.x86_64.rpm
2 gcc-4.8.5-28.el7.x86_64.rpm
3 glibc-2.17-222.el7.x86_64.rpm
4 glibc-common-2.17-222.el7.x86_64.rpm
5 glibc-devel-2.17-222.el7.x86_64.rpm
6 glibc-headers-2.17-222.el7.x86_64.rpm
7 kernel-headers-3.10.0-862.el7.x86_64.rpm
8 libmpc-1.0.1-3.el7.x86_64.rpm
9 mpfr-3.1.1-4.el7.x86_64.rpm

PS : 懒的找,这里有下载地址

3、(如果已经安装 gcc-c++ ,忽略此步骤。)在 CentOS 7 的安装镜像,packages 目录,找到安装 gcc-c++ 相关的 rpm 包,并放到一个文件夹里(命名2),列表如下(注意:不同版本的操作系统,对应的rpm版本也不同):

序号 安装包
1 gcc-c+±4.8.5-28.el7.x86_64.rpm
2 libstdc+±devel-4.8.5-28.el7.x86_64.rpm

PS : 懒的找,这里有下载地址

4、检查是否安装 zlib-devel (注意 : 是 zlib-devel , 不是 zlib)

rpm -qa|grep zlib-devel

5、(如果已经安装 zlib-devel ,忽略此步骤。)在 CentOS 7 的安装镜像,packages 目录,找到相关的 rpm 包,并放到一个文件夹里(命名3),列表如下(注意:不同版本的操作系统,对应的rpm版本也不同):

序号 安装包
1 zlib-devel-1.2.7-17.el7.x86_64.rpm

PS : 懒的找,这里有下载地址(包括 : zlib-devel 和 openssl-devel 及依赖)。

6、检查是否安装 openssl-devel (注意 : 有 -devel)

rpm -qa|grep openssl-devel

7、(如果已经安装 openssl-devel ,忽略此步骤。)在 CentOS 7 的安装镜像,packages 目录,找到相关的 rpm 包,并放到一个文件夹里(命名4),列表如下(注意:不同版本的操作系统,对应的rpm版本也不同):

序号 安装包
1 openssl-devel-1.0.2k-8.el7.x86_64.rpm

openssl-devel 所需要的依赖(套娃!!!)

序号 安装包
1 keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm
2 krb5-devel-1.15.1-8.el7.x86_64.rpm
3 libcom_err-devel-1.42.9-10.el7.x86_64.rpm
4 libkadm5-1.15.1-8.el7.x86_64.rpm
5 libselinux-devel-2.5-11.el7.x86_64.rpm
6 libverto-devel-0.2.5-4.el7.x86_64.rpm

8、下载离线安装包,放到文件夹1、2、3、4的同级目录:
Python-3.8.5.tar.xz

9、下载离线安装文件 virtualenv 及其依赖

序号 安装包
1 virtualenv-20.4.2-py2.py3-none-any.whl

virtualenv 的依赖

序号 安装包
1 appdirs-1.4.4-py2.py3-none-any.whl
2 distlib-0.3.1-py2.py3-none-any.whl
3 filelock-3.0.12-py3-none-any.whl
4 six-1.15.0-py2.py3-none-any.whl

安装依赖

1、安装 gcc (如果已经安装 gcc ,忽略此步骤。):
进入到文件夹1

rpm -Uvh *.rpm --nodeps --force

确认安装情况

gcc -v

2、安装 gcc-c++ (如果已经安装 gcc-c++ ,忽略此步骤。):
进入到文件夹2

rpm -Uvh *.rpm --nodeps --force

确认安装情况

g++ -v

3、安装 zlib-devel (如果已经安装,忽略此步骤):
进入到文件夹3

rpm -ivh zlib-devel-1.2.7-17.el7.x86_64.rpm

确认安装情况

rpm -qa|grep zlib-devel

4、安装 openssl-devel 及其依赖(如果已经安装,忽略此步骤):
进入到文件夹4

rpm -Uvh *.rpm --nodeps --force

确认安装情况

rpm -qa|grep openssl-devel

安装 Python

上传,将文件 Python-3.8.5.tar.xz 解压为 Python-3.8.5.tar :

xz -d Python-3.8.5.tar.xz

将文件 Python-3.8.5.tar 解压为文件夹 Python-3.8.5 :

tar -xf Python-3.8.5.tar

进入文件夹

cd Python-3.8.5

配置安装路径(注意参数 --with-ssl ,如果不加,在使用 pip 和 virtualenv 时,会报错。使用这个的前提是安装了 openssl-devel):

./configure --prefix=/usr/local/python3 --with-ssl

编译、安装:

make && make altinstall

安装完成之后 建立软链接 添加变量 方便在终端中直接使用 python 3

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

Python 3 安装完成之后 pip 3 也一块安装完成,不需要再单独安装.一样建立软链接:

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

测试是否安装成功

python3 -V
pip3 -V

安装 virtualenv

安装 virtualenv 依赖

pip3 install distlib-0.3.1-py2.py3-none-any.whl six-1.15.0-py2.py3-none-any.whl appdirs-1.4.4-py2.py3-none-any.whl filelock-3.0.12-py3-none-any.whl

安装 virtualenv

pip3 install virtualenv-20.4.2-py2.py3-none-any.whl

软连接

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

验证安装情况

virtualenv --version

异常处理

异常信息

ModuleNotFoundError: No module named '_ctypes'

原因分析

由于在 CentOS 7 系统中没有安装外部函数库(libffi)的开发链接库软件包,所以在 pip 安装的时候就报了 “ModuleNotFoundError: No module named ‘_ctypes’” 的错误

处理方法

安装外部函数库 ( libffi )

在 CentOS 7 的安装镜像,packages 目录,找到文件 libffi-devel-3.0.13-18.el7.x86_64.rpm, 安装命令如下

rpm -ivh libffi-devel-3.0.13-18.el7.x86_64.rpm

重新安装 python , 进入安装目录

make && make altinstall

用 pip3 Install 重新安装所需要的包

pip3 install SomeProject

小技巧

如何查找离线安装的依赖及安装顺序?
找个在线安装的环境,安装 *.whl ,可以查看到依赖情况,然后去下载所需依赖 *.whl ;
注意 : 需要按照顺序安装。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS 7 安装 Python 3 的相关文章

  • Vimeo API:获取下载所有视频文件的链接列表

    再会 我正在尝试从 Vimeo 帐户获取所有视频文件的列表 直接下载的链接 有没有办法在 1 GET 请求中做到这一点 好的 如果是API限制的话 就100倍 我有硬编码脚本 我在其中发出 12 个 GET 请求 1100 多个视频 根据文
  • 从 torch.autograd.gradcheck 导入 zero_gradients

    我想复制代码here https github com LTS4 DeepFool blob master Python deepfool py 并且我在 Google Colab 中运行时收到以下错误 ImportError 无法导入名称
  • docker 容器中的“(pygame parachute)分段错误”

    尝试在 docker 容器中使用 pygame 时出现以下错误 我想从容器中获取显示 Fatal Python error pygame parachute Segmentation Fault 重现 Docker已安装 docker ru
  • 如何替换Python字符串中的正确字母

    任务是 您的任务是纠正数字化文本中的错误 您只需处理以下错误 S 被误解为 5 O 被误解为 0 I 被误解为 1 我的代码 def correct string for i in string if 5 in string string
  • 使用管理员权限打开cmd(Windows 10)

    我有自己的 python 脚本来管理我的计算机上的 IP 地址 它主要在命令行 Windows 10 中执行netsh命令 您必须具有管理员权限 这是我自己的计算机 我是管理员 运行脚本时我已经使用管理员类型的用户 Adrian 登录 我无
  • 如何通过 python 中的函数运行列表?

    我试图通过我创建的函数运行我的列表 但不断收到错误 我不知道出了什么问题 温度 F temp f 19 21 21 21 23 功能 def fahrToCelsius tempFahrenheit return tempFahrenhei
  • Python:json_normalize pandas 系列给出 TypeError

    我在 pandas 系列中有数万行像这样的 json 片段df json IDs lotId 1 Id 123456 date 2009 04 17 bidsCount 2 IDs lotId 2 Id 123456 date 2009 0
  • 使用 Python 和 lmfit 拟合复杂模型?

    我想适合椭偏仪 http en wikipedia org wiki Ellipsometry使用 LMFit 将数据转换为复杂模型 两个测量参数 psi and delta 是复杂函数中的变量rho 我可以尝试将问题分离为实部和虚部共享参
  • Python,Google Places API - 给定一组纬度/经度查找附近的地点

    我有一个由商店 ID 及其纬度 经度组成的数据框 我想迭代该数据框 并使用 google api 为每个商店 ID 查找附近的关键地点 例如输入 Store ID LAT LON 1 1 222 2 222 2 2 334 4 555 3
  • 使用 Pandas 从 csv 文件读取标题信息

    我有一个包含 14 行标题的数据文件 在标头中 有经纬度坐标和时间的元数据 我目前正在使用 pandas read csv filename delimiter header 14 读取文件 但这只是获取数据 我似乎无法获取元数据 有人知道
  • 使用 Tkinter 打开网页

    因此 我的应用程序需要能够打开其中的单个网页 并且它必须来自互联网并且未保存 特别是我想使用 Tkinter GUI 工具包 因为它是我最熟悉的工具包 最重要的是 我希望能够在窗口中生成事件 例如单击鼠标 但无需实际使用鼠标 有什么好的方法
  • 为什么需要设置WORKON_HOME环境变量?

    我已经有一段时间没有使用 python 虚拟环境了 但我也安装了虚拟环境包装器 我的问题是 在文档页面中它说要这样做 export WORKON HOME Envs mkdir p WORKON HOME source usr local
  • Python在没有pandas的情况下解码excel表

    我正在尝试在 python 中读取 excel 文件而不使用pandas or xlrd 我一直在尝试将结果转换为bytes to utf 8没有任何成功 xls 文件中的数据 colA colB colC spc 1D0 20190705
  • Flymake的临时文件可以在系统临时目录下创建吗?

    我目前正在使用以下代码在 emacs 中连接 Flymake 和 Pyflakes defun flymake create temp in system tempdir filename prefix make temp file or
  • Snakemake:将多个输入用于具有多个子组的一个输出的规则

    我有一个工作管道 用于下载 比对和对公共测序数据执行变体调用 问题是它目前只能在每个样本的基础上工作 i e作为每个单独测序实验的样本 如果我想对一组实验 例如样本的生物和 或技术复制 执行变体调用 则它不起作用 我试图解决它 但我无法让它
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 数据损坏 C++ 和 Python 之间的管道

    我正在编写一些代码 从 Python 获取二进制数据 将其通过管道传输到 C 对数据进行一些处理 在本例中计算互信息度量 然后将结果通过管道传输回 Python 在测试时 我发现如果我发送的数据是一组尺寸小于 1500 X 1500 的 2
  • 类返回语句不打印任何输出

    我正在学习课程 但遇到了问题return语句 它是语句吗 我希望如此 程序什么也没有打印出来 它只是结束而不做任何事情 class className def createName self name self name name def
  • 为什么从 openAI 导入 Universe 模块时出现“无效语法”错误

    当我导入时universe来自 openAI 的模块 我收到以下错误 Traceback most recent call last File
  • Tkinter 将鼠标点击绑定到框架

    我一定错过了一些明显的东西 我的 Tkinter 程序中有两个框架 每个框架在网格布局中都有一堆标签 我想将鼠标点击绑定到其中一个而不是另一个 我目前使用 root bind

随机推荐

  • XSS(跨站脚本攻击)详解

    XSS攻击通常指的是通过利用网页开发时留下的漏洞 通过巧妙的方法注入恶意指令代码到网页 使用户加载并执行攻击者恶意制造的网页程序 这些恶意网页程序通常是JavaScript 但实际上也可以包括Java VBScript ActiveX Fl
  • 从零开始zynq linux AXI DMA传输

    本文从0开始叙述过程 使用的工具为vivado2016 4 sdk也是2016 4 准备工作 首先下载如下的目标文件 1 下载xilinx官方的bootloader文件 git clone https github com Xilinx u
  • zookeeper集群安装+集群值启动+source命令+export命令

    1zookeeper集群安装 1安装到3台虚拟机上 mini2 mini3 mini4 2先要安装好JDK 步骤 1先给mini2 mini3 mini4创建用户hadoop 密码也是hadoop adduser hadoop passwd
  • python数据科学(十):pandas基础—— 数据导入导出

    数据科学 十 数据格式 csv 载入数据到 Pandas 分隔 缺失 指定读取 指定列名 指定行索引 指定多层索引 逐块读取 处理 正则表达式 缺失值处理 统计次数 保存数据到磁盘 不写索引 不写列名 指定分隔符 只写一部分 pickle
  • 【ffmpeg基础】ffmpeg音频编码

    一 aac编码 输入raw音频编码为AAC ffmpeg i input wav acodec aac y input aac 通过 acodec来指定音频编码器 视频编码器为 vcodec 也可以使用 c a来指定音频编码器 ffmpeg
  • 企业架构LNMP学习笔记29

    Nginx负载均衡配置 架构分析 1 用户访问请求Nginx负载均衡服务器 2 Nginx负载均衡服务器再分发请求到Web服务器 实际配置负载均衡 只需修改作为负载均衡服务器的Nginx即可 当前架构中的server04 在客户端解析域名到
  • 华为OD机试 - 日志首次上报最多积分(Java)

    题目描述 日志采集是运维系统的的核心组件 日志是按行生成 每行记做一条 由采集系统分批上报 如果上报太频繁 会对服务端造成压力 如果上报太晚 会降低用户的体验 如果一次上报的条数太多 会导致超时失败 为此 项目组设计了如下的上报策略 每成功
  • 1.17 从0开始学习Unity游戏开发--场景切换

    前面的所有文章我们都在一个固定的游戏场景内进行开发 在最开始介绍场景这个概念的时候就已经提及 这个场景可以是一张地图 或者是一个对战房间等等 所以显然这个场景可以有多个 并且可以从一个场景切换到另外一个场景 那么在Unity中如何进行场景切
  • 基本逻辑运算

    目录 1 与 2 或 3 非 4 与非 5 或非 6 异或 7 同或 1 与 输入有零 输出为0 输入全1 输出才1 1 逻辑表达式 L A B
  • windows下安装ElasticSearch的Head插件

    es5以上版本安装head需要安装node和grunt 1 从https nodejs org en download 下载相应系统的msi 双击安装 2 安装完成用cmd进入安装目录执行 node v 可查看版本号 3 执行 npm in
  • github搭建个人博客报错分析及用法总结

    注册可以参考csdn中关于注册的相关博客 这里我想说的是 当重复注册 出现github账号被标记的情况 或者操作失误所产生的不能搭建个人博客的问题 遇到这种问题 直接联系管理员就好 一封礼貌的email就可以解决问题 1 每个人只能注册一个
  • C/C++实现输入终止则循环结束

    C while scanf d n EOF C while cin gt gt N
  • 【Windows】局域网内共享文件夹的设置方法

    引言 Windows 系统自带有文件共享功能 可实现局域网内简单的协同办公 本文简单介绍一下该功能该如何使用 需求 假设这里有两台在同一局域网的电脑 设备别名分别定义为 pc1 和 pc2 现在 pc1 桌面上建立一个名为 public 的
  • Street Workout

    sw网站 网站简介 很早就有了这个想法 但是无奈一直没有去做 终于到了这个寒假 2019 2020上 开始编码了 作为自己第一个单独开发的网站 经过了十多天的堆码 终于完成了大概的框架 虽然没有什么浏览量但是还是挺开心的 话不多说 放图 多
  • java获取指定时间前N天和后N天

    获取指定时间前N天后N天 Test public void getLastDay String time public void getLastDay SimpleDateFormat sdf new SimpleDateFormat yy
  • iPhone上查询UDID

    查找设备的 UDID 有多种方式 可以通过 iTunes 或 Finder 查找 也可以通过 Xcode 查找 这里介绍一种在线通过 iPhone 或 iPad 直接查找 UDID 的方法 1 在 iOS 设备上打开 Safari 浏览器
  • 华为OD机试 - 食堂供餐(Java)

    题目描述 某公司员工食堂以盒饭方式供餐 为将员工取餐排队时间降低为0 食堂的供餐速度必须要足够快 现在需要根据以往员工取餐的统计信息 计算出一个刚好能达成排队时间为0的最低供餐速度 即 食堂在每个单位时间内必须至少做出多少价盒饭才能满足要求
  • H5微信分享记录

    最近做H5微信分享 用的微信jssdk来做 现记录下一些过程和遇到的问题 一 公众号配置 微信官方文档 已经说明了使用步骤 公众号配置比较模糊 主要是要配置ip白名单和绑定js接口安全域名 1 检查分享接口权限是否已获得 在微信公众号的 设
  • 考虑载波和采样频率的2PSK调制 MATLAB仿真

    功能 生成psk调制信号 创建日期 2016 7 27 创建人 Alice 764499604 qq com clear all close all clc max 100 g zeros 1 max g randint 1 max 长度为
  • CentOS 7 安装 Python 3

    文章目录 前言 操作系统说明 在线安装 离线安装 环境 组件说明 组件用途说明 安装步骤 详细步骤 准备安装 搜集 下载 安装依赖 安装 Python 安装 virtualenv 异常处理 异常信息 原因分析 处理方法 小技巧 前言 推荐在