linux系统升级python版本看起来复杂,如果知道其中步骤也不会觉得很困难。下面记录在deepin系统 15.11和ubuntu16.04系统下将python从2.7升级到3.8过程

升级python版本到3.8

使用普通用户完成以下操作:

更新源

sudo apt update

下载必要软件

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev curl libbz2-dev

注意:以 - 开头的标题可以选做

-下载 sqlite3

如果不安装sqlite3,升级python3之后找不到sqlite包

wget https://www.sqlite.org/2018/sqlite-autoconf-3240000.tar.gz 

解压:
tar -xvzf sqlite-autoconf-3240000.tar.gz 进入目录:
cd sqlite-autoconf-3240000/ 编译:
/configure --prefix=/usr/local/sqlite 安装:
make -j4&&sudo make install

下载python源码包

curl -O https://mirrors.huaweicloud.com/python/3.8.7/

解压

tar -xf Python-3.8.7.tar.xz
cd Python-3.8.7

-修改setup.py

进入python源码中,找到setup.py,修改 setup.py

查找" sqlite_inc_paths" 新增
'/usr/local/sqlite/include'
'/usr/local/sqlite/include/sqlite3'

编译生成make文件。

这里一定要带上编译参数--with-ssl,该参数是编译python是加入SSL,如果没有在使用pip3时会报错SSL有问题

./configure --with-ssl

make

make

安装

altinstall 的意思是不覆盖原来系统中的python版本。如果覆盖会出现终端打不开等一些问题。

sudo make altinstall

-复制sqlite相关的库文件

find / -name cpython-37m-x86_64-linux-gnu.so

cp /usr/local/lib/python3.8/lib-dynload/_sqlite3.cpython-37m-x86_64-linux-gnu.so /usr/local/lib/python3.8/lib-dynload/_sqlite3.so

将默认python3替换成更新的

which python3.8
rm -rf /usr/bin/python3
sudo ln -s /usr/local/bin/python3.8 /usr/bin/python3

将pip3更换成最新

这一步不同的系统会有不同。有些系统没有pip3,直接使用即可。

which pip3.8
rm -rf /usr/bin/pip3
sudo ln -s /usr/local/bin/pip3.8 /usr/bin/pip3

报错 lsb_release 找不到

如果在使用python虚拟环境时报错 lsb_release 找不到

  raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.

全局搜索 lsb_release ,找到之后然后删除

安装虚拟环境

安装两个虚拟环境的包,顺序不可乱

pip3 install virtualenv
pip3 install virtualenvwrapper

配置环境变量

找到虚拟环境的管理脚本路径,配置环境变量需要

编辑文件 vim ~/.bashrc

find / -name virtualenvwrapper.sh
>> /home/vagrant/.local/bin/virtualenvwrapper.sh

不同系统文件的位置不同,以实际为准

初始化环境变量,编辑文件~/.bashrc

export virtualenvwrapper_python=/usr/bin/python3
export workon_home=$home/.virtualenvs
source /home/vagrant/.local/bin/virtualenvwrapper.sh
source ~/.bashrc

新建虚拟环境

mkvirtualenv -p python3 python3.8

进入虚拟环境

workon python3.8

python版本升级到3.8以及安装虚拟环境的更多相关文章

  1. python编程中在ubuntu中安装虚拟环境及环境配置

    1.升级python包管理工具pip pip install --upgrade pip 备注:当你想升级一个包的时候 `pip install --upgrade 包名` 2.python虚拟环境安 ...

  2. Python 安装虚拟环境

    写在前面: 安装指南是在 Ubuntu 下面操作的.不同的 Linux 版本,安装指令不同.所以,该指南的某些指令对于像 CentOS 等非 Ubuntu 系统不适用. 为什么需要使用虚拟环境? 虚拟 ...

  3. Python:Anaconda安装虚拟环境到指定路径

    1 曾经的困扰 有段时间,想使用基于不同python版本的anaconda,就直接从官网下载了两个不同的anaconda版本进行安装.刚开始的时候,还觉得也没啥问题.用了一小段时间,在安装其他的第三方 ...

  4. Python 使用 virtualenvwrapper 安装虚拟环境

    装载于https://www.jianshu.com/p/9f47a9801329 Python 使用 virtualenvwrapper 安装虚拟环境 Tim_Lee 关注 2017.05.04 2 ...

  5. 解决安装虚拟环境出现的问题(OSError: Command /home/python/.virtua...ngo3_web/bin/python3 - setuptools pkg_resources pip wheel failed with error code 2)

    python3的报错解决: OSError: Command /home/python/.virtua...ngo3_web/bin/python3 - setuptools pkg_resource ...

  6. python安装虚拟环境pipenv

    python里如果多个多个项目同时引用包,就会涉及到包版本的问题,包不同版本管理的问题可以用虚拟环境来管理, 创建虚拟环境,这里是用官方推荐的pipenv来创建 先用pip命令行安装pipenv pi ...

  7. python中在ubuntu中安装虚拟环境及环境配置

    python中在ubuntu中安装虚拟环境及环境配置 1.升级python包管理工具pip pip install --upgrade pip 备注:当你想升级一个包的时候 `pip install ...

  8. python 安装虚拟环境步骤

    1.python3.6.3 注: 1.安装的时候,装上你的pip 2.安装的时候,把环境变量记得勾选 3.如果你手动更改安装位置,更改到随意的盘根目录下 2.MySQL      pycharm最好安 ...

  9. python在Linux中安装虚拟环境,区别python2和python3,分别安装模块

    安装虚拟环境的时候遇到的问题,解决的过程很闹心,在这里简单直接的分享出来,就是为了解决问题.  安装虚拟环境(须在联网状态下) $ sudo pip install virtualenv $ sudo ...

  10. python版本升级及pip部署方法

    Python版本升级 CentOS 6.3自带的Python版本为2.6,首先需要升级到2.7版本.由于旧版本的Python已被深度依赖,所以不能卸载原有的Python,只能全新安装. 1.下载Pyt ...

随机推荐

  1. 支持C#的开源免费、新手友好的数据结构与算法入门教程

    前言 前段时间完成了C#经典十大排序算法(完结)然后有很多小伙伴问想要系统化的学习数据结构和算法,不知道该怎么入门,有无好的教程推荐的.今天给大家推荐一个支持C#的开源免费.新手友好的数据结构与算法入 ...

  2. 月薪3w的报表工程师要会哪些技能?报表工程师的招聘要求解读

    对于月薪3w的报表工程师,通常需要具备以下技能: 1. 数据分析与处理 - 数据仓库:了解数据仓库的设计原则和架构,能够构建和优化数据仓库结构. - SQL语言:熟练掌握SQL查询语言,能够编写复杂的 ...

  3. [CSAPP、APUE、UNP]文件、IO

    <鸟哥的Linux私房菜:基础学习篇(第四版)> 第5章 Linux的文件权限与目录配置 第6章 LInux文件与目录管理(正在进行) <CSAPP> 第10章 系统级IO 1 ...

  4. 聊一聊 .NET高级调试 中必知的符号表

    一:背景 1. 讲故事 在高级调试的旅行中,发现有不少人对符号表不是很清楚,其实简而言之符号表中记录着一些程序的生物特征,比如哪个地址是函数(签名信息),哪个地址是全局变量,静态变量,行号是多少,数据 ...

  5. Ubuntu基线指导手册

    Ubuntu基线指导手册 1.   身份鉴别策略组检测 准备: 安装一个PAM模块来启用cracklib支持,这可以提供额外的密码检查功能. 在Debian,Ubuntu或者Linux Mint使用命 ...

  6. BlockCanary原理解析

    一.背景 为了解决应卡顿,分析耗时. 二.原理 Looper中的loop方法: public static void loop() { ... for (;;) { ... // This must ...

  7. 介绍下final ,finally 和 finalize三者的区别

    final,finally和finalize在Java中都是关键字,但它们的用途和含义都是完全不同的. final:final是一个修饰符,可以用于修饰类.方法和变量. 当final修饰一个类时,表示 ...

  8. JAVAEE基础知识

    JAVAEE基础知识 2018年3月,开源组织Eclipse基金会宣布,JavaEE(Enterprise Edition)被更名为JakartaEE,也就是9版本后改名Jakarta EE,也就是J ...

  9. antd5中文设定

    antd5中文设定 import zhCN from "antd/lib/locale/zh_CN" <ConfigProvider locale={zhCN} theme= ...

  10. C# / VB.NET 获取PDF文档的数字签名信息

    文档中的数字签名具有不可否认性,可有效防伪防篡改.对文档中已有的数字签名信息,可通过一定方法获取,下面通过程序代码介绍如何来实现.程序中,使用了Spire.PDF.dll,版本:6.11.6,可自行在 ...