文章目录
- 一、python 版本选型
- Django 版本和 Python 版本的对照关系
- 二、linux下 python安装
- ubuntu20.04 安装
- **Linux Ubuntu 20.04 LTS 一键安装 Python3 不同版本的方法**
- centos8 编译安装Python 3.8.10
- 编译过程中遇到的问题
- 提示编译成功,还是有些模块未编译好
- 缺少_ctypes模块
- 创建虚拟环境
- 三、windows下安装python
- windows下安装python 3.10
一、python 版本选型
官方下载地址:https://www.python.org/downloads/
首先,是Python2.x和Python3.x的选择,这是两个大版本。目前Python2.x的版本更新和技术支持已经被官方停止了。Python2.x的最后一个版本是2020年发布的Python2.7.18。
Python3.x并不是Python2.x的简单升级,为了不带入过多的累赘,Python 3.x 在设计的时候没有考虑向下兼容。因此,如果不是老代码维护,我们新代码建议采用Python3.x。
ok,接下来,就是Python3.x 我们具体怎么选?
我们先看官方python 3.8.14 的描述 注意:您正在查看的版本是 Python 3.8.13,它是旧版 3.8 系列的安全错误修复版本。Python 3.10现在是 Python 3 的最新功能发布系列。
比如:根据PEP 569中指定的发布日历,Python 3.8 现在处于其生命周期的“仅安全修复”阶段:3.8 分支仅接受安全修复,并且在 2024 年 10 月之前不定期以仅源代码形式发布这些修复。Python 3.8 不再接收常规错误修复,并且不再为其提供二进制安装程序。 Python 3.8.10是 Python 3.8 的最后一个完整的错误修复版本,带有二进制安装程序。
可以看到Python 3.8,官方不再为其提供二进制安装程序,并且也只以源码的形式做安全问题修复。
我们再看官方python 3.9.14 注意:您正在查看的版本是 Python 3.9.14,它是旧版 3.9 系列的安全错误修复版本。
没有安装程序
根据PEP 596中指定的发布日历,Python 3.9 现在处于其生命周期的“仅安全修复”阶段:3.9 分支仅接受安全修复,并且在 2025 年 10 月之前不定期地以仅源代码的形式发布。 Python 3.9 不再接收常规的错误修复,并且不再为其提供二进制安装程序。Python 3.9.13是 Python 3.9 的最后一个带有二进制安装程序的完整错误修复版本。
总结:当前最新是3.10.x,之前的版本都是只修复安全问题,如果有安全问题,我们需要下载最新的源码编译使用修复。
整体来说问,问题不大,如果考虑到最新版本稳定性问题以及一些常用框架和python版本兼容性问题,我们就使用3.8、3.10版本,使用源码编译!
Ubuntu 20.04 LTS 默认 Python 版本为3.8.10。
Ubuntu 22.04 LTS (Jammy Jellyfish)。然而该版本默认的 Python 3 版本为 Python 3.10,高于许多开发者正在使用的 3.9、3.8 甚至更早版本。
Django 版本和 Python 版本的对照关系
官方链接:https://www.djangoproject.com/download/
Django 在BSD 许可下开源 。我们建议使用最新版本的 Python 3。支持 Python 2.7 的最后一个版本是 Django 1.11 LTS。有关每个版本的 Django 支持的 Python 版本,参阅 常见问题解答。
个人工作技巧:我们选型完python,直接只用pip 安装django以及各种依赖,不要带版本号,这样基本所有的依赖就是和当前python最兼容匹配的。
二、linux下 python安装
ubuntu20.04 安装
Ubuntu 20.04 LTS 默认 Python 版本为3.8.10。
Ubuntu 22.04 LTS (Jammy Jellyfish)。然而该版本默认的 Python 3 版本为 Python 3.10,高于许多开发者正在使用的 3.9、3.8 甚至更早版本。
3.8.10 依然比较主流,这里推荐使用默认!
3.10 貌似也是不错的选择!如果你直接使用Ubuntu 22.04 LTS,使用python 3.10开发会比较流畅,也不用重新安装python。
Linux Ubuntu 20.04 LTS 一键安装 Python3 不同版本的方法
添加 Python 的软件源,方便我们进行安装。
sudo apt update
sudo apt install software-properties-common
#添加 Deadsnakes PPA(一个非常好用的第三方软件源):
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
#安装不同版本 Python3, 如:3.10
sudo apt install python3.10
更新python默认指向为python3.10
首先,删除原有链接
rm /usr/bin/python
which python3
ln -s /usr/bin/python3.10 /usr/bin/python
rm /usr/bin/python3
ln -s /usr/bin/python3.10 /usr/bin/python3
安装pip
sudo apt install python3-pip
安装 venv 这样一定要指定具体的版本号和python环境一致 如python3.10
sudo apt install python3.10-venv
激活虚拟环境
source venv/bin/activate
退出虚拟环境
deactivate
centos8 编译安装Python 3.8.10
在CentOS8上搭建Python3.8运行环境
参考URL: https://www.modb.pro/db/144965
Centos7安装Python3.8详细教程
- 按照编译python需要用到的依赖:
sudo yum -y install gcc gcc-c++ zlib-devel bzip2-devel openssl-devel sqlite-devel readline-devel libffi-devel
sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel xz-devel gdbm-devel
- 下载python到临时目录
VERSION=3.8.10
wget -P /tmp/ https://www.python.org/ftp/python/${VERSION}/Python-${VERSION}.tgz
下载到临时目录去编译,
tar -xvzf /tmp/Python-${VERSION}.tgz -C /tmp/
cd /tmp/Python-${VERSION}
- 编译
指定安装目录为 $HOME/python3
(这一步会比较久)
mkdir -p $HOME/python3
#./configure --prefix=/usr/local/python3
./configure --prefix=$HOME/python3 --enable-optimizations
–enable-optimizations选项通过运行多次测试,来优化 Python 二进制文件。这将会使得构建过程更慢。
nproc
make -j 8
修改 以对应于处理器中的内核数。你可以通过运行nproc
来找到你的处理器核心数。
PS: nproc命令可以显示当前进程可用的CPU数目,该数目可能小于实际工作数
生成过程完成后,安装 Python 二进制文件(请不要使用标准的make install,因为它将覆盖默认的系统Python二进制文件):
sudo make altinstall
make altinstall与make install的区别,altinstall skips creating the python link and the manual pages links。
altinstall跳过创建python链接和手册页链接的操作。
如果使用make install,在系统中将会有两个不同版本的Python在/usr/bin/目录中,这将会导致很多问题。
因此我们在configure中配置一下编译安装路径就解决了这个问题。
总结:如果我们编译参数没有没配置安装路径,使用默认安装路径的话,就需要使用 make altinstall。所以一般有多个版本时,我们直接使用 make altinstall 就好!
编译过程中遇到的问题
提示编译成功,还是有些模块未编译好
Python build finished successfully! #提示安装成功
The necessary bits to build these optional modules were not found:
_dbm _gdbm _lzma
_tkinter nis
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel xz-devel gdbm-devel
缺少_ctypes模块
python3中有个内置模块叫ctypes,它是python3的外部函数库模块,提供了兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用centos7系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库),而在centos7系统中没有安装外部函数库(libffi)的开发链接库软件包。
安装libffi包
yum install libffi-devel
创建虚拟环境
Python 虚拟环境是一个自包含的目录树,其中包含 Python 安装和大量其他包。它允许您在特定项目的隔离位置安装 Python 模块,而不是全局安装。这样,您就不必担心影响其他 Python 项目。
在此示例中,我们将创建一个新的 Python 3.8 项目,称为在用户主目录中。my_app
首先,创建项目目录并切换到:
mkdir ~/my_app && cd ~/my_app
从项目根内部运行以下命令以创建名为 :my_app_venv
python3.8 -m venv my_app_venv
激活环境:
source my_app_venv/bin/activate
激活后,shell 提示符将用环境名称前缀。从 Python 3.4 开始,在创建虚拟环境时,默认情况下将安装 Python 的包管理器pip。
三、windows下安装python
windows下安装python 3.10
- 官网下载:https://www.python.org/downloads/release/python-3108/
- 安装