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 系统那样。
整个生态早就透心凉了。