Python 多版本管理

作者 Leehyon HNG | 1084 字, 3 分钟 | 0 评论 | 2022-12-30 | 类别 Articles

help, python

更新

2024-08-28

推荐使用 conda 来进行多版本管理,之前的方法已不再推荐。

  • conda 是一个包管理器和环境管理器,可以创建独立的环境,并在每个环境中安装不同版本的 Python 和其他包。
  • 通过 conda 创建的虚拟环境是完全隔离的,不会影响全局的系统环境变量。
  • conda 可以同时管理 Python 包和非 Python 包,例如你可能需要的 C 库或其他工具。这比单纯的 pip 更加强大和灵活。

起因

我相信很多人会遇到这样的问题,电脑装了 Python3.x,突然又要用到 Python2.x,那怎样让两者共存而又不影响各自使用呢?如果你去百度,出来的答案基本上都推荐把 python.exe 改个名字。

个人非常不建议这么做,虽然可能看似解决了,但是呢,先不说你这么随便改会不会影响其他功能,这种做法本身非常不优雅,而且它还破坏了程序,如果这是一种解决方案的话,Python 官方也不会 release。

所以该怎么做呢?今天我们来聊聊。

从安装开始说起

不知道大家在最开始安装 Python 的时候有没注意到两个选项:

  • Install launcher for all users (recommended)
  • Add Python to PATH

python38-installer

细心的你肯定发现第一个选项是默认勾选的,而且还有括弧推荐,而 “Add Python to PATH” 却没有这种待遇,这么设计官方是几个意思?而这又不得不从 PATH 变量说起。

关于 PATH

在 Windows 系统中,PATH 是一个特殊的环境变量,它是一个包含多个路径的字符串,每个路径之间用分号分隔。当你在命令行中输入一个可执行文件的名称时,Windows 会搜索这些路径,以找到该文件的位置,使你可以在任何位置运行该文件。因此,为了让操作系统能运行 Python,是有必要在安装的时候将 Python 加入 PATH 的。

但问题是,Python 不能只装一个,有时候我们会遇到开头的困境,那如何是好呢?其实很早以前官方就给出了解决方案,也就是安装界面的那个默认选项,详细介绍可以参考「这里」。

Python 启动器

Python 启动器(launcher)也就是 py.exe,如果勾选第一个选项,默认安装在 C:\Windows\ 路径下,它允许我们在多个 Python 版本之间进行选择和切换。使用启动器,可以将 Python 脚本与指定的 Python 版本一起运行,而不用考虑系统默认的 Python 版本(即添加在 PATH 中的)。此外,启动器还可以自动检测 Python 脚本中的顶行,即 #!/usr/bin/env python 行,并选择正确的 Python 版本来运行它。

在命令行中输入 py --list 会显示系统已安装的 Python 版本:

PS C:\Users\leehyon> py --list
Installed Pythons found by C:\Windows\py.exe Launcher for Windows
 -3.9-64 *
 -3.9-32
 -2.7-64

假设你现在写了一个 script.py 脚本, 要在 Python 3.9 下运行,则可以使用以下命令:

py -3.9 script.py

或者想用 Python 2.7 版本运行:

py -2 script.py

当然,如果嫌麻烦,就如上面说的,在 script.py 代码里的顶行加入说明,比如:#! python2,这样就可以简化成:

py script.py

最后

今天先聊到这,具体的用法还需自己探索,建议多看看「官方文档」。

另外,多认识一下环境变量,比如系统环境变量和用户环境变量,它们之间的优先级等等,有时候可以帮你解决很多问题。

相关文章

Leehyon HNG

作者

Leehyon HNG

嵌入式软件工程师,安徽歙县人。躺不平的不想打工者,爱自由也拥抱规则,生命不止,折腾不休。在 GitHub 关注我,或在 Mastodon了解更多。