Python / 开发相关 · 2023年11月3日

Python 的版本与依赖管理

Python 全新版本 3.12

官网:Python 3.12 有什么新变化

更新完之后,运行 django 项目就报错无法运行,于是去捣蛋一下 pyenv (python 的版本管理器)

自从接触 python 后,发现 python 的版本之间有着巨大的差别,常常差一个小版本,或一些库的版本不对,整个项目就运行不来。

版本差异导致的运行失败

于是就有了虚拟环境、以及指定依赖库版本。

操作如下

Step 1. 安装版本管理器

# bash
curl https://pyenv.run | bash

# windows powershell
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

Step 2. 使用 pyenv 指定版本

pyenv isntall 3.9.10
pyenv local 3.9.10

Step 3. 创建虚拟环境

python -m venv venv

Step 4. 进入虚拟环境

# liunx
source ./venv/Scripts/active

# windows
.\venv\scripts\activate.ps1

命令行输入:deactivate 即可退出

Step 5. 将所需的依赖放在 requirement.txt 文件中

pip freeze > requirement.txt
pip install -r requirement.txt

作用:虚拟环境增加可控范围

由于开发机是 window,服务器是 Linux ,多少有一些不同,锁死版本至少一定程度可以减少排查的时间。

尤其做开源项目,更加需要可控的环境,保证项目运行环境的一致性。

小结:版本差异讲究平衡艺术

某程度来说,版本升级不应过分关注“兼容度”,为了全兼容也会导致运行和开发效率降低。

取决于底层架构的设计,讲究的是“平衡的艺术”,假如全不兼容,如 Python2 Python3 之间的版本,以及手机界的 window phone8 系统那样。

整个生态早就透心凉了。

Enable Notifications OK No thanks