ubantu python完整安装示例(ubantu16.04 python3.7.1演示)、包含cmake完整安装流程(主要适用于arm linux机器)

零、前言

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

使用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-common

add-apt-repository ppa:deadsnakes/ppa
或者add-apt-repository ppa:jonathonf/python-3.7

apt-get update

apt-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.下载并安装cmake

1.0准备

linux用户需要进行时间同步

#设置时区 依次输入 4 9 1
tzselect
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#手动设置系统时间
sudo date -s MM/DD/YY
sudo date -s hh:mm:ss 
#自动设置,系统时间与网络时间同步
sudo apt-get install ntpdate
ntpdate cn.pool.ntp.org

date -R #查看系统时间是否生效
#同步系统时间到硬件时间
hwclock --systohc
hwclock --show #查看硬件时间是否生效,只看分钟和秒钟即可

如果不做这步,可能会出现:
The C++ compiler does not support C++11 (e.g. std::unique_ptr)
这是因为 linux 操作系统下, 当cmake源码所在位置为挂载盘(mount), 且挂载盘位于不同的服务器, 此时如果出现挂载盘服务器与当前服务器时间不同步, 编译cmake源码则会报上述错误。

1.1预编译包安装

适用于非 arm32+linux 的用户
https://cmake.org/download/
在这里插入图片描述
选择自己平台的安装包,如果是仍然是linux,解压后跳转至1.3继续安装。win和mac平台可以直接选择软件安装,一般都可直接使用,直接跳过后续步骤直接测试 cmake --version

1.2源码编译安装

(一般用于arm32架构e.g.armv7l + linux系统)

sudo apt update
sudo apt install gcc
sudo apt install g++
sudo apt install ninja-build
sudo apt install make
sudo apt install libssl-dev
sudo apt install wget
cd ~
wget https://www.cmake.org/files/v3.10/cmake-3.24.3.tar.gz
tar -zxvf cmake-3.24.3.tar.gz # 或者从上面这个网站(https://www.cmake.org/files/v3.10/cmake-3.24.3.tar.gz)直接下载并放到~目录下
cd cmake-3.24.3
sudo mkdir /usr/local/cmake

#检查文件是否齐全
#法一
	./bootstrap --prefix=/usr/local/cmake
#法二
	export CXXFLAGS="-O3"#有时不需要
	./configure --prefix=/usr/local/cmake
	
make -j4 #主要看机器的内存和cpu核数。内存小,即使cpu有4个核也不要用-j4而是-j1
sudo make install

然后跳转至1.3继续安装


1.3配置环境变量

软链接的方法 sudo ln -s /usr/local/cmake/bin /usr/bin ,然后就可以直接使用了
或者为cmake添加配置路径
sudo vi ~/.bashrc
在第一行添加
export PATH=/usr/local/cmake/bin:$PATH
关闭文件,source ~/.bashrc,当前用户即可一直使用这个配置路径

验证cmake是否安装成功
cmake --version
在这里插入图片描述
到此cmake就安装完成了。

2.下载必要的依赖

更新下载源:

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 update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev

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


二、获取Python源码包

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.gz
tar -xzvf Python-3.7.1.tgz 
如果是.tar
tar -zvf Python-3.7.1.tar

三、Python编译安装

#进入解压的目录
cd ~/Python-3.7.1
#创建安装目录
sudo mkdir -p /usr/local/python3
#编译并安装
./configure --prefix=/usr/local/python3  --enable-optimizations
make -j4(低端cpu或内存小使用 -j1)
sudo make install

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


四、Python链接并验证

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

#如果你还想保留python2则:
sudo ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
使用时:pytho3 ...
#否则添加python3的软链接也链接到python上,这样python3和python都是使用当前python版本的 
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的软链接也链接到pip上,这样pip3和pip都是使用当前python版本的     
sudo ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip

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


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

更新pip下载源

pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
								http://mirrors.aliyun.com/pypi/simple

删除pip下载源

pip3 config unset global.index-url

查看当前使用的下载源

pip3 config list

以上都为命令行方式,还可使用配置文件方式:
vi ~/.pip/pip.conf

[global]
index-url = https://mirrors.aliyun.com/pypi/simple
[install]
trusted-host=http://mirrors.aliyun.com

五、Python配置环境变量

vim ~/.bashrc

export PYTHON_HOME=/usr/local/python3
export PATH=$PYTHON_HOME/bin:$PATH
export PYTHONPATH=/usr/local/python3/lib/python3.7/site-packages:$PYTHONPATH

source ~/.bashrc

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

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看不见的罗辑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值