基于Ubuntu 18.04  自带了3.6,可惜 3.7秒出. 后面还有3.8

一个原则是:

自带的3.6不要动

防止用apt install python3-XXX时版本不对.

理由: 自带的2.7和3.6都是让操作系统自己用的;

python是linux系发行版的一部分, 在linux发行版中的地位不低于windows里Windows/文件夹下的系统工具.正因为这样,才不要随便折腾每个发行版自带的py版本.

相反,python不是windows的一部分,正因为不是,所以在windows下才可以随便安装卸载升级py都没问题.

而自己跑程序用的最新版python解释器,是为了:

用pipenv建立简单运行环境,结合sublime text3 ctrl+B 运行简单程序.

这样,简单的小程序就不需要用docker python镜像+pycharm这么重型的工具了.

3.6归操作系统, 3.7+为我自用

重在隔离.

1 安装准备

编译python源码时,可能会报错,

ModuleNotFoundError: No module named '_ctypes'

参考https://blog.csdn.net/sinat_36184075/article/details/80155392

1.1 安装

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 -y libffi-dev liblzma-dev

参考https://tecadmin.net/install-python-3-7-on-ubuntu-linuxmint/

sudo apt-get install -y build-essential checkinstall
sudo apt-get install -y libreadline-gplv2-dev libncursesw5-dev libssl-dev \
libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

1.2 编译openssl

因为之前编译python3.7之后遇到了 import ssl 报错  或者使用pika的时候

ModuleNotFoundError: No module named '_ssl'

说明编译python时,  openssl 没有配置对

为了保险,还是建议自己先编译一下openssl

https://www.cnblogs.com/xuanmanstein/p/11547505.html

2下载编译安装

2.1下载

注意小版本号可能升级(注意浏览py官网新版本源码发布地址:https://www.python.org/downloads/source/

cd /usr/src
sudo wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz --no-check-certificate
sudo tar xzf Python-3.8.2.tgz

2.2 编译/安装

删除 pip  virtualenvs 缓存

rm -rf ~/.cache/pip
rm -rf ~/.local/share/virtualenvs

编译安装

cd /usr/src/Python-3.8.
sudo ./configure --enable-shared --enable-optimizations --with-openssl=/usr/src/openssl-1.1.1d
sudo make
sudo make altinstall
sudo ldconfig /usr/local/lib

注意带上 --enable-shared, 因为编译geos等库时可能需要, ubuntu自带的3.6也是带的

altinstall 保证没有替换系统自带的python3版本

必须有 ldconfig 这句,不然启动时会报错

python3.8: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory

python3.8

可以启动. 表示编译成功

mint19 源码安装python3.7的更多相关文章

  1. centos7源码安装Python3的前提条件

    centos7源码安装Python3的前提条件: # yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline- ...

  2. CentOS7 下源码安装 python3

    CentOS 7 下源码安装 python3   在CentOS7下,默认安装的是python2.7:为满足项目要求,安装python3 的方法如下:   1. 首先安装python3.6可能使用的依 ...

  3. 源码安装Python3

    源码安装Python3 一.安装Python3需要的依赖包 [root@localhost ~]# yum install -y gcc make wget openssl openssl-devel ...

  4. CentOS6.5源码安装python3.5.2

    前提: 1.实现自动补全需要安装模块 readline-devel (yum install -y readline-devel) 2.实现支持SSL协议需安装模块 openssl-devel (yu ...

  5. Centos源码安装Python3

    CentOS7默认安装了python2.7.5,当需要使用python3的时候,可以手动下载Python源码后编译安装. 下载python(https://www.python.org/ftp/pyt ...

  6. Linux 源码安装 Python3

    下载源码包https://www.python.org/downloads/ 解压(以3.64版本为例)wget https://www.python.org/ftp/python/3.6.4/Pyt ...

  7. centos7 源码安装python3

    1.非常重要!必须得先安装py3所依赖的软件包,否则可能会出现py3安装成功,却缺少相应的pip yum groupinstall "Development tools" yum ...

  8. ubuntu16.04 源码安装Python3.7 (可以在此基础上安装Tensorflow) (确保Tensorflow计算框架与系统的彻底隔离)

    Python3.7 源码下载: https://www.python.org/downloads/release/python-370/ 解压源码: tar -zxvf Python-3.7.0.tg ...

  9. CentOS 7.2 源码安装Python3.6

    1.环境 安装CentOS 7.2最小系统(CentOS-7-x86_64-Minimal-1511.iso) 2.需求 Python-3.6.4.tar.xz(官网下载) GCC(yum安装) 一堆 ...

随机推荐

  1. rocketmq安装与基本操作

    如果不是因为政治原因,就rocketmq的社区活跃度.版本.特性和文档完善度,我是无论如何也不会使用rocketmq的. rocketmq严格意义上并不支持高可靠性,因为其持久化只支持异步,有另外一个 ...

  2. DevExpress 数据绑定

  3. sudo env

    $ sudo echo "Defaults        env_keep=\"PATH PYTHONPATH LD_LIBRARY_PATH CAFFE_ROOT\"& ...

  4. EXP7 网络欺诈技术防范(修改版)

    实践内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 1.简单应用SET工具建立冒名网站 2.ettercap DNS spoof 3.结合应用两种技术,用DNS s ...

  5. 使用vim打造自己的python编辑器

    基础配置 vim的配置是在用户主目录下的 ~/.vimrc 文件中完成的,如果没有的话,需要自己新建一下: cd ~ touch .vimrc 首先做些简单的配置: set nocompatible ...

  6. VC++ 获取exe或者dll版本信息

    #include <iostream> #include <atlstr.h> #pragma comment(lib,"version.lib") CSt ...

  7. orm查询存在价格为空问题

    明明写的没错还是查不到 打印一下sql语句: 解决办法: 把数字变成字符串格式 所以涉及金融计算,涉及小数啊,要求特别精确的,我们用字符串存储.

  8. Junit中的setUp()与setUpBefore(), tearDown()与tearDownAfterClass()解析

    @BeforeClass public static void setUpBeforeClass() throws Exception { } @AfterClass public static vo ...

  9. Windows 安装Java与配置环境变量

    window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloa ...

  10. P4097 [HEOI2013]Segment(李超树)

    链接 https://www.luogu.org/problemnew/show/P4097 https://www.lydsy.com/JudgeOnline/problem.php?id=3165 ...