ubantu python完整安装示例(python3.7.1演示)

news/2024/9/20 1:25:37/

文章目录

  • 前言
  • 准备源码包
    • 1.下载
    • 2.解压
  • 准备工作(重要)
    • 1.下载cmake(用于编译源码)
    • 2.下载必要的Module
    • 注意事项
  • 编译安装
  • 链接并验证
  • 配置环境变量
    • 1.移除原3.5link
    • 2.更换默认python3 的版本为3.7
    • 3.添加路径

前言

为什么需要使用源码编译安装?

使用apt-get下载验证python3安装时,(sudo apt-get install python3) 你可能会看到python3 is already the newest version (3.5.1-3)。即你提供的仓库中不存在更高版本或者通过apt-get暂时只能安装这么高的版本。
如果你没看到这个提示,那么就可能单纯是你的仓库中没有这个版本的python,可以如下操作:

apt-get install -y software-properties-commonadd-apt-repository ppa:deadsnakes/ppa
或者add-apt-repository ppa:jonathonf/python-3.7apt-get updateapt-get install python3.7

或者尝试添加软件源:
vi /etc/apt/sources.list

# 阿里云的软件源
deb http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
#ubuntu 有科学上网可以加上,否则太慢,没用
# deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
# deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
# deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
# deb http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
# deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb http://ppa.launchpad.net/q-quark/equalx/ubuntu xenial main

更新下载源
sudo apt-get update

如果还是不行,就可以考虑从源码编译安装了。
本教程使用Python3.7.1演示安装


准备源码包

1.下载

这里提供3.7.1的源码包:
链接: https://pan.baidu.com/s/1640r2VRsH1rpmMzUW0Wb4w?pwd=hell
如何想下载其他版本的,可以官网下载:
https://www.python.org/ftp/python/
下载完成后将tar包上传到需要安装的机器上。
或者如果有科学上网也可以在命令行操作:

apt-get install wget
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz 

2.解压

cd ~/tar -xzvf Python-3.7.1.tgz 
如果是tar包
tar -zvf Python-3.7.1.tar

准备工作(重要)

1.下载cmake(用于编译源码)

apt-get install wget
wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz
tar -zxvf cmake-3.10.3.tar.gz
cd cmake-3.10.3
./configure
make
sudo make install

2.下载必要的Module

更新下载源:

sudo apt-get update

下载:

sudo apt-get install gcc g++ patchelf zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev lzma liblzma-dev libffi-dev libc6-dev
如果 libffi-dev无法安装,可以按下列指令单独下载:

sudo apt-get updatesudo apt-get upgradesudo apt-get dist-upgradesudo apt-get install build-essential python-dev python-setuptools python-pip python-smbussudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-devsudo apt-get install zlib1g-dev libsqlite3-dev tk-devsudo apt-get install libssl-dev opensslsudo apt-get install libffi-dev

注意事项

一定要下载完了再进行下一步,否则你可能会在make编译时看到这些信息:
ModuleNotFoundError: No module named '_ctypes'或其他module不在的报错,从而导致需要重新编译。


编译安装

#进入解压的目录
cd ~/Python-3.7.1
#创建安装目录
sudo mkdir -p /usr/local/python3
#编译并安装
./configure --prefix=/usr/local/python3  --enable-optimizations
make
sudo make install

可以参考我结束:
在这里插入图片描述


链接并验证

建立新的指向python3.7的软链接(类似做了一个命令映射或快捷指令)

#如果你还想保留python2则:
sudo ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
使用时:pytho3 ...
#否则添加python3的软链接
sudo ln -s /usr/local/python3/bin/python3.7 /usr/bin/python#如果你还想保留pip则:
sudo ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
使用时:pip3 ...
#否则添加pip3的软链接     
sudo ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip

如果报错就:
rm -rf /usr/bin/python
rm -rf /usr/bin/pip
e.g.
ln: failed to create symbolic link '/usr/bin/pip': File exists
则:rm -rf /usr/bin/pip


验证
在这里插入图片描述
在这里插入图片描述


配置环境变量

1.移除原3.5link

rm -rf /usr/bin/python3

2.更换默认python3 的版本为3.7

sudo ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3

3.添加路径

vim ~/.bashrc

export PYTHON_LIBRARY_PATH=/usr/local/python3/lib
export PYTHON_INCLUDE_PATH=/usr/local/python3/include
export PYTHON_HOME=/usr/local/python3
export PATH=$PYTHON_HOME/bin:$PATH

soource ~/.bashrc

到此python3.7.1就安装完了,本教程也适用于其他版本的安装


http://www.ppmy.cn/news/26746.html

相关文章

C++空指针和野指针

空指针:指针被赋值为空 例如: int* p nullptr;int* p NULL; 空指针指向的地址是00000000,但空指针不可以解引用 野指针:指针指向了不可控的位置 例如: 未初始化 int* p; //野指针 越界访问 int intArr[5]{0, 1, …

硬件设备 之一 详解 JTAG、SWD 接口、软 / 硬件断点、OpenOCD、J-link

JTAG 和 SWD 在嵌入式开发中可以说是随处可见,他们通常被用来配合 J-Link 、ULINK、ST-LINK 等仿真器在线调试嵌入式程序。此外,还有飞思卡尔芯片中的 Background debug mode(BDM) 接口,Atmel 芯片中的 debugWIRE &…

OAK相机跑各种yolo模型的检测帧率和深度帧率

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…

使用loading动画让你的条件渲染页面更高级

前言在我们做项目的使用常常会使用条件渲染去有选择的给用户展示相关页面,如果渲染的数据或场景比较多比较复杂,那么往往需要3、4s的时间去完成,用户点击了之后就会陷入3、4s的空白期,并且这段时间屏幕是处于一种”未响应“的状态…

Spring IOC 容器 Bean 加载过程

Spring IOC 容器 Bean 加载过程 Spring 对于我们所有的类对象进行了统一抽象,抽象为 BeanDefinition ,即 Bean 的定义,其中定义了类的全限定类名、加载机制、初始化方式、作用域等信息,用于对我们要自动装配的类进行生成。 Sprin…

漫画 | Python是一门烂语言?

这个电脑的主人是个程序员,他相继学习了C、Java、Python、Go, 但是似乎总是停留在Hello World的水平。 每天晚上,夜深人静的时候,这些Hello World程序都会热火朝天地聊天但是,这一天发生了可怕的事情随着各个Hello wor…

离散数学笔记_第一章:逻辑和证明(1)

1.1命题逻辑1.1.1 命题 1.1.2 逻辑运算符 定义1: 否定联结词定义2: 合取联结词定义3: 析取联结词定义4: 异或联结词1.1.3 条件语句 定义5: 条件语句定义6: 双条件语句1.1.1 命题 1.命题:是…

记一次 .NET 某医保平台 CPU 爆高分析

一:背景 1. 讲故事 一直在追这个系列的朋友应该能感受到,我给这个行业中无数的陌生人分析过各种dump,终于在上周有位老同学找到我,还是个大妹子,必须有求必应 😁😁😁。 妹子公司的…

【结构体版】通讯录

👦个人主页:Weraphael ✍🏻作者简介:目前是C语言学习者 ✈️专栏:项目 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x…

数据库期末复习总结-hnu

基本把所有知识点都罗列了(吧),小部分知识点(求闭包、多值依赖)留到以后再补吧,先把坑留在这里。 整理不易,多多点赞(orz) 第一章 数据库系统 数据库:可长期…

Allegro无法打开10度走线命令的原因和解决办法

Allegro无法打开10度走线命令的原因和解决办法 做PCB设计的时候,10度走线也是较为常见的设计方式,Allegro支持10度走线,如下图 需要10度走线的时候,Options只需要勾选Route offset命令即可 但有时options处会看不到10度走线的命令,如下图

python--matplotlib(3)

前言 Matplotlib画图工具的官网地址是 http://matplotlib.org/ Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示,制作的图形达到出版级的标准。 其他matplotlib文章 python--matpl…

力扣(LeetCode)418. 屏幕可显示句子的数量(2023.02.20)

给你一个 rows x cols 的屏幕和一个用 非空 的单词列表组成的句子,请你计算出给定句子可以在屏幕上完整显示的次数。 注意: 一个单词不能拆分成两行。 单词在句子中的顺序必须保持不变。 在一行中 的两个连续单词必须用一个空格符分隔。 句子中的单词总…

预告|2月25日 第四届OpenI/O 启智开发者大会昇腾人工智能应用专场邀您共启数字未来!

如今,人工智能早已脱离科幻小说中的虚构想象,成为可触及的现实,并渗透到我们的生活。随着人工智能的发展,我们正在迎来一个全新的时代——数智化时代。数据、信息和知识是这个时代的核心资源,而人工智能则是这些资源的…

react源码中的协调与调度

requestEventTime 其实在React执行过程中,会有数不清的任务要去执行,但是他们会有一个优先级的判定,假如两个事件的优先级一样,那么React是怎么去判定他们两谁先执行呢? // packages/react-reconciler/src/ReactFibe…

边玩边学,13个 Python 小游戏真有趣啊(含源码)

经常听到有朋友说,学习编程是一件非常枯燥无味的事情。其实,大家有没有认真想过,可能是我们的学习方法不对? 比方说,你有没有想过,可以通过打游戏来学编程? 今天我想跟大家分享几个Python小游…

Linux 学习指南

Linux 学习指南 文章目录Linux 学习指南前言一、在线教程1.1鸟哥的 Linux 私房菜1.2Linux 工具快速教程1.3快乐的 Linux 命令行1.4Linux 教程 | 菜鸟教程1.5Linux 教程 | W3Cschool二、社区网站2.1Linux 中国2.2Linux 公社2.3Linux Today2.4ChinaUnix2.5Linux 运维部落三、在线…

python filtermapreducezip

一、filter 过滤 filter 过滤, 从可迭代对象中,筛选出满足条件的元素,再将这些满足条件的元素,组成一个新的可迭代对象。 方式一:filter(过滤方法,可迭代对象) 举例:将一个list中…

FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(一)

在最后一个例程中笔者精挑细选了一个较为综合性的项目实战,其中覆盖了很多知识点,也是从一个转产产品中所提炼出来的,所以非常贴近实战项目。 整个工程实现了用户通过对上位机PC端人机界面的操作,即可达到控制豌豆开发并行DAC输出…

基于springboot+vue的校园社团管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…