对于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
类似的功能(目前仅适用于Windows 3.3和Windows的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中使用-对于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命令行中,文件删除通常是永久性的,小的错字可能是个坏消息。