mint install python3 from source

20200702  

大版本没区别时,不要自己编译安装!

ubuntu20.04 自带 只有3.8.2 没有2.7了.  而3.9要10月才出.所以,这时候,就别自己编译python3.8.3 了. 一不留神,就各种问题,比如文件管理器打不开...只能重装

 

基于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.8+为我自用

重在隔离.

 

1 安装准备

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

ModuleNotFoundError: No module named '_ctypes'

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

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

1.1 安装  

升级系统自带python 注意已经全部是python3-XXX

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install -y build-essential checkinstall
sudo apt-get install -y python3-dev python3-setuptools python3-pip python3-smbus
sudo apt-get install -y libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install -y zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install -y libssl-dev
sudo apt-get install -y libffi-dev liblzma-dev
sudo apt-get install -y libreadline-gplv2-dev libbz2-dev

1.2 编译openssl

因为之前编译python3.8之后遇到了 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.10.4/Python-3.10.4.tgz --no-check-certificate
sudo tar xzf Python-3.10.4.tgz

2.2 编译/安装 

删除 pip  virtualenvs 缓存

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

 

编译安装 注意openssl版本

cd /usr/src/Python-3.10.4
sudo ./configure --enable-shared --enable-optimizations --with-openssl="/usr/src/openssl-1.1.1n" --with-openssl-rpath=auto
sudo make -j 4
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.10

 

可以启动. 表示编译成功


再检查一下pip3.10是不是正确,防止指向系统自带的3.6

 

更新一下pip

 sudo pip3.10 install --upgrade pip

  

pip3 可能不再指向3.6了

 

如果不对,就修正一下

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

posted @ 2018-12-08 11:05  永远的幻想  阅读(1230)  评论(0编辑  收藏  举报