对版本降级这个事, 得深入地去理解它。在项目开发的流程里, 因为会碰到像项目所依赖的东西、版本会不会匹配得上, 或者是为了做测试需要这种状况。所以, 我们在某些时候就得把版本往低了降, 也就是做降级操作。这篇文章将会从头到尾详细地聊聊版本降低的那些基础知识, 具体的操作办法都有哪些, 平常大家是怎么做的, 还有说好的最佳做法是什么。为的就是想让大家都能搞得很明白, 并且在实际工作当中能够高效率地把版本降级的任务给完成掉。这里是目录, 它包括了基础概念、使用方法、常见实践、最佳实践、小结以及参考资料, 其中开头又是基础概念。所谓的版本降级, 其实就是把系统里面已经装好的高版本的东西, 给换成低版本的那些东西。不同版本号的东西, 它们在语法、标准库还有性能这些方面, 都是不一样的。有些项目, 可能就得靠着某个特定版本号的东西, 才能好好地跑起来。举个例子, 有些以前的老项目, 用的是二号点零版本的特有语法, 要是放到三号点零的版本里去直接运行, 那就跑不动了, 在这种情况下, 就非得把这个版本号给降回到二号点零去, 这么干才能保住项目是兼容的, 不会出问题。关于具体的使用方法, 我们是通过使用pyenv来实现版本的降级操作的, 这样便可以进行版本回退了。pyenv是一个现在人们广泛使用的, 用来管理版本的工具, 它能够使得用户在不同版本之间进行切换的操作变得相当轻松。安装 pyenv# 克隆 pyenv 仓库git clone ~/.pyenv# 配置环境变量echo export PYENV_ROOT$HOME/.pyenv ~/.bashrcecho export PATH$PYENV_ROOT/bin:$PATH ~/.bashrcecho -e if command -v pyenv 1/dev/null 21; then\n eval $(pyenv init -)\nfi ~/.bashrc# 使配置生效source ~/.bashrc安装目标 版本# 列出所有可用的 Python 版本pyenv install --list# 安装指定的 Python 版本例如 3.6.8pyenv install 3.6.8在整体的配置里, 设置那个关于什么版本的。# 设置全局 Python 版本为 3.6.8pyenv global 3.6.8采取版本向下调整的手段来执行降级。它是一个专门用于科学计算的发行版, 同时它还带有 conda 包管理工具的存在, 这样一来就可以方便地创建和管理不同环境版本的状况。我们要去创建一个全新环境的这个动作。# 创建一个名为 py36 的 Python 3.6 环境conda create -n py36 python3.6# 激活环境conda activate py36进行核实, 确认其当前的具体版本。import sysprint(sys.version)在常见的实践项目之中, 因为所依赖的因素, 会导致发生软件版本进行降低的情况。有某些项目是直接依赖于特定版本号的应用程序接口库的, 而那些库很有可能是没法和当前环境里比较新的高版本进行配套的。就比如说, 某个具体项目进行开发的时候是使用了一个只能够支持到3.6这个版本的库的, 可是此时此刻在当前计算机上实际所安装上去的版本却是3.8, 在这个具体的场景之下就必须要把所使用的软件包的等级往下调一调, 一直到匹配上那个3.6为止。兼容性测试的版本降级在开发阶段里头, 咱们得为了保证项目能够在不同版本上面都顺利跑起来, 所以需要进行那个兼容性测试的操作。具体办法, 就是可以利用版本管理工具, 去创建出好几个不同的版本环境来。然后, 再把这些项目分别放在这些各个环境里面去运行一下, 以此来完成整个测试工作的。关于最佳实践我们给出如下版本管理方面的建议: 一定要把不同环境之间的数据隔离开来。我们要使用虚拟环境, 比如说是venv这个选项, 或者就是conda环境这类东西, 这样做的主要目的是为了把不同项目所对应的相关环境给隔离起来。通过这种隔离操作, 能够确保每一个项目里面的依赖内容都不会对其它项目产生相互之间的影响作用。# 使用 venv 创建虚拟环境python -m venv myenv# 激活虚拟环境source myenv/bin/activate小结在开发这个过程里面, 版本降级是一个很常见的操作, 通过使用那种合适版本的版本管理工具还有虚拟环境这种东西, 可以很轻松地把版本降级的任务给完成掉, 还可以确保项目本身的兼容性和它的稳定性怎么样, 在实际的开发工作当中, 要是能跟着那些最好的实践活动去走的话, 就可以提高那个开发效率是怎么样的, 也可以减少由于配置环境而带来的一堆问题是怎么回事。参考资料