如何创建虚拟环境
首先,选择您要使用的 Python。
虚拟环境始终链接到单个版本的 Python。当您创建一个时,您必须决定为哪个版本的 Python 创建它。此外,您的计算机上必须已安装此版本的 Python。
下一步是决定虚拟环境的名称。我经常将其命名为“.venv”(带点),但您可以将其命名为“blabla”、“my_env”或任何您想要的名称。这只是它将创建的文件夹的名称。稍后我们有一个关于选择名称的部分。
然后,您必须决定将虚拟环境放置在哪里。通常,我将一个放在每个项目的顶级目录中。
打开终端(如果您使用的是 Windows,并且终端、shell 和提示符不是熟悉的主题,请查看本文),并确保您位于要创建虚拟环境的目录中。
假设您已经在终端中创建虚拟环境,现在可以使用以下命令创建一个新环境:
py -3.X -m venv NAME_OF_THE_ENV
在 Windows 上激活虚拟环境
“X”是您想要的 Python 次要版本,“NAME_OF_THE_ENV”是您想要为虚拟环境指定的名称。
py -3.10 -m venv .venv
例如,如果我想使用 Python 3.10 创建一个名为“.venv”的虚拟环境,我将使用:
请记住,您需要在此计算机上安装此Python 版本才能正常工作。如果不存在 Python 3.10,则无法为 Python 3.10 创建虚拟环境。
当命令完成后,它不会显示任何内容。但是您所在的目录中会出现一个新文件夹。
虚拟环境的好名字是什么?
您可以为虚拟环境使用任何名称,但我喜欢保持标准化,这样每次打开项目时,我都会立即知道哪个文件夹包含它。
我通常将其命名为“.venv”,因为:有些编辑器会检查此名称并自动加载它。它包含“venv”,所以它是明确的。它有一个点,所以它在 Linux 上是隐藏的。我避免使用“.env”,因为它在环境变量中很流行。
如果我在同一个目录下有多个虚拟环境,我会使用后缀来区分它们。
例如,如果我有一个项目必须使用两个不同版本的 Python(3.9 和 3.10),我将有一个“.venv39”和一个“.venv310”虚拟环境。
如果我有一个未链接到项目但用于特定目的的虚拟环境,我将根据该目的对其进行命名。
如何使用虚拟环境
要使用虚拟环境,最方便的方法就是激活它。
这是一个很奇特的词,我们告诉终端,“现在我想使用这个文件夹中的内容,并且只使用这个文件夹中的内容”。
要激活它,您需要在终端中创建它的同一目录中。
不要进入虚拟环境文件夹。
在 Windows 上激活虚拟环境
运行以下命令:
NAME_OF_THE_ENV\Scripts\activate
例如,如果虚拟环境名为“.venv”:
.venv\Scripts\activate
您现在应该在终端提示符中看到虚拟环境的名称,告诉您它已激活。
每当您在激活虚拟环境时使用“python”命令时,它都将只是该环境中的一个。
如果你现在启动一个Python shell,它只会看到当前目录中的东西,以及虚拟环境中安装的东西。
如果运行脚本,它只会看到当前目录中的内容以及虚拟环境中安装的内容。
如果您运行命令,该命令将从虚拟环境中获取。
而且他们只会使用虚拟环境的 Python 版本。
因此,现在如果您安装并运行某些东西,它仅限于这个虚拟环境,并且不会与任何其他项目发生冲突。
您可以随时通过键入以下内容来停用虚拟环境:
deactivate
如果您愿意,还可以激活另一个。
您还可以拥有多个终端,每个终端都有不同的激活的虚拟环境。他们不会冲突。
如何使用 pip 安装某些东西
首先,您应该激活一个虚拟环境。在未确保已激活虚拟环境的情况下,切勿使用 pip。
然后在终端中使用以下命令:
python -m pip install NAME
“NAME”是您要安装的东西。
例如,安装“pendulum”,优秀的日期和时间处理库:
python -m pip install pendulum
这将在虚拟环境的文件夹中下载并安装 pendulum。如果您在激活此虚拟环境的情况下运行 Python,您将能够导入 pendulum。然而,在这个特定的虚拟环境之外,pendulum不可用。
该命令的卸载操作是:
python -m pip uninstall NAME
重新创建虚拟环境
您无法移动虚拟环境,它将停止工作。另外,如果您更改了虚拟环境中使用的Python,例如卸载它时,它将停止工作。
出于这些原因,能够重新创建完全相同的虚拟环境会很方便。
为此,请在终端中运行(激活虚拟环境):
python -m pip freeze > requirements.txt
这将创建一个名为“requirements.txt”的新文件,列出虚拟环境中所有已安装的软件包。
如果需要,您可以创建一个新的虚拟环境并通过执行以下操作重新安装其中的所有软件包:
python -m pip install -r requirements.txt
不应该做什么:
不要在虚拟环境之外使用 pip。我重复一遍,但这一点很重要。许多教程都会邀请您这样做。例如:先安装pipx或poetry。它将添加到您面临的潜在问题列表中。阅读“为什么不告诉人们“简单”使用 pyenv、poetry 或 anaconda”以获得详细解释。
因此,不要使用 pipx 或poetry。
您也不应该使用“--user”,因为它是为了在虚拟环境之外安装东西而设计的。
不要混合 pip、venv 和 Anaconda。如果可以的话,避免使用 Anaconda。如果您必须使用 Anaconda,请忽略整个教程,并且不要使用 pip 和 venv。限制自己使用 Anaconda 工具。
不要手动进入虚拟环境或在虚拟环境中创建文件。这不是必需的。
不要移动虚拟环境。创建一个“requirements.txt”文件,删除虚拟环境并创建一个新环境。
不要重命名包含虚拟环境的目录。或者,如果您这样做,请准备好创建一个“requirements.txt”文件,删除虚拟环境并创建一个新环境。