考虑以下场景。
您安装了三个版本的 Python:
- Python 3.7
- Python 3.8
- Python 3.9
您的“默认”版本是 3.8。它是您的path 中出现的第一个。因此,当您在 shell 中键入 python3(Linux 或 Mac)或 python(Windows)时,您将启动 3.8 解释器,因为这是遍历路径时找到的第一个 Python 可执行文件。
假设您正在开始一个新项目,您想在其中使用 Python 3.9。您创建一个名为 .venv 的虚拟环境并激活它。
python3.9 -m venv .venv # "py -3.9" on Windows
source .venv/bin/activate # ".venv\Scripts\activate" on Windows
我们现在使用 Python 3.9 激活了虚拟环境。在 shell 中键入 python 会启动 3.9 解释器。
但是,如果你输入
pip install <some-package>
那么pip用的是什么版本的呢?它是默认版本(即 Python 3.8)的 pip,还是虚拟环境中的 Python 版本?
解决这种歧义的简单方法就是使用
python -m pip install <some-package>
-m 标志确保您使用的是与活动 Python 可执行文件绑定的 pip。
始终使用-m 是一种很好的做法,即使您只安装了一个用于创建虚拟环境的全局 Python 版本。
回复。路径
所谓的path 是系统搜索可执行文件的目录列表。当您键入命令时,例如python,此列表会从第一个目录遍历到最后一个目录,搜索与您键入的命令匹配的文件名。
如果找到文件名/命令,则执行匹配的文件,而不考虑以后可能的匹配。如果未发生匹配,您将获得 Command not found 或其变体。此行为是设计使然。
在 UNIX 系统上,路径环境变量称为 $PATH,而在 Windows 系统上则称为 %PATH%