对于 Python 3.3+(带有新venv
的内置模块)
简短答案(无论版本如何):
- 没有干净、直接的方法来移动虚拟环境
- 只需重新创建,这很容易!
长答案:
从 Python v3.3 开始,virtualenv
已成为一个名为venv
.
其他答案中提到的--relocatable
选项未包含在 中venv
,目前我知道没有好的、安全的方法可以重命名或重新定位 Python 虚拟环境。
但是,使用所有当前安装的包重新创建一个虚拟环境是相当简单的。请参阅此答案,或参阅以下部分。在此过程中,您可以在任何位置以您想要的任何名称重新创建新环境。
在上面链接的答案中,他提到了一些可能支持直接重命名或移动的第三方包。如果您决定寻求一种移动虚拟环境的方法,您可以研究这些方法是否也可以使用venv
。
注意:在那个答案中,它的重点是virtualenv
,而不是venv
。有关如何翻译,请参阅下一节。
venv
与旧的virtualenv
命令语法
要使用的命令venv
是:
python -m venv
而不仅仅是virtualenv
,它作为命令安装在原始包中。“python”指的是你运行你的python可执行文件的地方,它可能是各种各样的东西,例如:
python
py
或py -3.7
或类似的(目前仅适用于 Python 3.3+ 和 Windows的Python 启动器)
python3
(双重安装 python 2 和 3 的 linux 环境的约定)
- 如果遇到问题,请使用要运行的 python 可执行文件的绝对路径:例如
c:\program files\python37\python.exe
如果您不确定正在运行哪个版本,您可以随时python --version
查找。
如何重新创建虚拟环境
创建/重新创建虚拟环境很容易,并且在您使用它们一段时间后应该成为第二天性。此过程反映了您在前半部分将脚本作为包(及其依赖项)分发时所做的事情,然后有人会为进一步开发而安装您的脚本/包所做的事情。
首先,获取虚拟环境中内容的更新列表。激活它后,获取它使用的 Python 版本并将依赖项列表保存到文件中。
与激活的虚拟环境一起使用python --version
以查看它正在使用的 Python 版本。
- 这是为了清楚起见 - 您可能出于各种原因想要更新 Python 版本 - 至少到最新的补丁版本
- 例如,如果现有的 venv 使用的是 Python v3.7.4,但现在 v3.7.6 已经过时 - 请改用 v3.7.6,它应该只包括非破坏性安全性和错误修复。
用于python -m pip freeze > requirements.txt
创建当前包依赖项列表并将它们放入requirements.txt
文件中。这个命令肯定可以在 Linux 或 Git Bash 中工作 - 不能 100% 确定 Windows 中的 Powershell 或命令行。
现在创建一个新的虚拟环境,然后添加旧的依赖项。
做你的新venv。
- 确保您使用的是要安装到 venv 的正确版本的 python。
- 如果您希望它是完全相同的 Python 版本:
- 直接从当前虚拟环境(激活它)运行 python,并
python
作为命令使用
python.exe
或者在虚拟环境文件夹中使用绝对路径
- 对于命令中的新 venv 文件夹条目:
- 将绝对或相对路径添加到所需的最终文件夹位置。
- 用于在当前工作目录中的新文件夹
python -m venv my_new_venv
中创建新的虚拟环境。my_new_venv
- venv 文件夹的名称将是 venv 的名称(激活时提示中显示的名称)。
从requirements.txt
文件中安装您的依赖项。
python -m pip install -r requirements.txt
您可能需要重新安装处于开发模式的本地软件包。
请注意,如果您需要查看软件包安装到的特定位置,请使用:
python -m pip list -v
- 或“
-v
详细”选项将添加有关已安装的每个软件包的一些额外信息,包括它的安装路径。这有助于确保您保持虚拟、用户和系统安装的软件包直截了当。
此时您可以删除旧的 venv 文件夹和所有内容。我建议为此使用 GUI - 从 linux 命令行删除文件通常是永久性的,一个小的错字可能是坏消息。