参考:https://www.bbsmax.com/A/MyJxj2P2dn/

先试试ppa

使用Ubuntu的PPA(Personal Package Archives个人软件包存档),实质是更改source.list进行软件的更新。这个方式第一次尝试,比较之前的升级方式简便,只需3步(ps:我没成功,看下面也许你会成功)。那就开始尝试了。

  1. #1、添加仓库
  2. add-apt-repository ppa:deadsnakes/ppa
  3. #若出现bash: add-apt-repository: command not found,则安装:
  4. apt-get install software-properties-common
  5. #2、更新源
  6. apt-get update
  7. #3、安装高版本python
  8. apt install python3.9

再试试手动编译安装

安装依赖

zlib-1.2.12.tar.gz.7z

sudo apt-get install -y wget

sudo apt-get install make

sudo apt-get install -y gcc

 #zlib我这里没有安装,因为zlib-1.2.11已经更新到zlib-1.2.12,11版本下载不到了
sudo wget http://www.zlib.net/zlib-1.2.11.tar.gz
sudo tar -xzvf zlib-1.2..tar.gz
cd zlib-1.2.
sudo ./configure
sudo make all
sudo make install
cd ..
#如果要安装,需要改成https://www.zlib.net/zlib-1.2.12.tar.gz

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install -y build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install -y build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install -y zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install -y libssl-dev openssl
sudo apt-get install libffi-dev

编译

下载一个高版本python,地址:https://www.python.org/ftp/python/3.9.9/
image.png

wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz
tar -xzvf Python-3.6..tgz
cd Python-3.6.
sudo ./configure
sudo make all
sudo make install

修改软链接,原始ubuntu16的python3软链接指向当前目录下的python3.5
image.png
image.png

软链接

#1、移除旧的软链
sudo rm -rf /usr/bin/python3
#如果有pip3,需要删除掉
sudo rm -rf /usr/bin/pip3

# 2、创建新的,因为安装的时候没有指定安装路径,默认安装到/usr/local/bin/
sudo ln -s /usr/local//bin/python3.6 /usr/bin/python3
#pip3.有点号
sudo ln -s /usr/local/bin/pip3. /usr/bin/pip3

# 验证指向是否是python3.
python3 -V
pip3 -V

image.png
image.png
image.png
本来环境变量设置的是python3.5的软链接python3,我们通过替换软连接的方式,就不需要重新设置环境变量了,一些其他软件安装之后如果要在各个目录都可以使用命令,就需要单独设置环境变量了

lsb_release问题:

尝试pip3 install pipenv或者pip3 list都会出现这个问题
image.png

image.png

# 更改该文件
sudo vi /usr/bin/lsb_release
# 第一行#!/usr/bin/python3 -Es 更改为#!/usr/bin/python3. -Es

dist-package和site-package

1、系统自带python
系统自带软件管理器安装, 模块将被安装到 dist-packages
/usr/lib/python2.7/dist-packages/
从 easy_install 和 pip (注: 是python的软件管理其,python有许许多多的软件) 使用,他们也使用 dist-packages,但是路径是:
/usr/local/lib/python2.7/dist-packages/

2、自己安装或者升级过后的python
python安装第三方库的路径是:
/usr/lib/python2.7/site-packages/
从 easy_install 和 pip 安装的第三方库安装路径是:
/usr/local/lib/python2.7/site-packages/

3、非root用户,从 easy_install 和 pip安装第三方库的安装路径是
~/.local/lib/python2.7/site-packages
有时候需要检查第三方库的路径是否在(笔者在这里碰见过一个坑,正常路径下又某个库,但是import找不到,只能指向这里的对应的库)
~/.local/lib/python2.7/site-packages/external/protobuf/python

easy_install和pip

1、python程序会使用很多模块,通常安装模块的方法是找到官方网站,选择合适的版本下载安装,很麻烦。为了简化安装第三方的模块,python提供了easy_install工具,只需要一条命令就可以安装合适的模块,easy_install是python-setuptools包里的一个命令,所以只要安装python-setuptools就可以了。

ubuntu:

sudo apt-get install python-setuptools
centos:

sudo  yum install python-setuptools
安装好之后就可以用 easy_install +模块名称 来安装模块了

2.安装pip
 pip是一个可以替代 easy_install 的安装和管理 python 软件包的工具,提供更好的提示信息,可以删除包。linux自带的python版本比较低,软件源里没有python-pip包,不过我们可以先按照上面安装easy-install,在用easy_install安装pip
sudo easy_install pip

3.用法
easy_install的用法:
1) 安装一个包
$ easy_install <package_name>
$ easy_install "<package_name>==<version>"
2) 升级一个包
$ easy_install -U "<package_name>>=<version>"

pipenv

参考:https://developer.aliyun.com/article/928194