参考:https://www.bbsmax.com/A/MyJxj2P2dn/
先试试ppa
使用Ubuntu的PPA(Personal Package Archives个人软件包存档),实质是更改source.list进行软件的更新。这个方式第一次尝试,比较之前的升级方式简便,只需3步(ps:我没成功,看下面也许你会成功)。那就开始尝试了。
#1、添加仓库
add-apt-repository ppa:deadsnakes/ppa
#若出现bash: add-apt-repository: command not found,则安装:
apt-get install software-properties-common
#2、更新源
apt-get update
#3、安装高版本python
apt install python3.9
再试试手动编译安装
安装依赖
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/
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
软链接
#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
本来环境变量设置的是python3.5的软链接python3,我们通过替换软连接的方式,就不需要重新设置环境变量了,一些其他软件安装之后如果要在各个目录都可以使用命令,就需要单独设置环境变量了
lsb_release问题:
尝试pip3 install pipenv或者pip3 list都会出现这个问题
# 更改该文件
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>"