如何在Python中重命名virtualenv?

Ksh*_*ogi 53 python directory virtualenv

我用以下方法拼错了virtualenv它的名字:

$ virtualenv vnev
Run Code Online (Sandbox Code Playgroud)

我实际上打算用名称创建环境venv.尝试将vnev文件夹重命名为venv,我发现这并没有提供太多帮助.激活环境的名称仍然重命名旧的vnev.

$ mv vnev venv
$ . venv/bin/activate
(vnev) $ deactivate
Run Code Online (Sandbox Code Playgroud)

我想知道如何重命名环境?

and*_*rew 103

默认情况下,virtualenv不支持重命名环境.删除virtualenv目录并使用正确的名称创建一个新目录更安全.你可以这样做:

  1. 激活你的virtualenv: source vnev/bin/activate
  2. 创建当前安装的packages的require.txt: pip freeze > requirements.txt
  3. 删除拼写错误的virtualenv: rm -r vnev/
  4. 使用正确的名称创建一个新的virtualenv: virtualenv venv
  5. 激活新的virtualenv: source venv/bin/activate
  6. 从requirements.txt安装包: pip install -r requirements.txt

如果重新创建不是一个选项,那么像virtualenv-mv这样的第三方工具可能会有所帮助.

或者,您可以使用virtualenvwrapper,它提供cpvirtualenv复制或重命名virtualenvs 的命令.

  • 删除旧的 virtualenv 之前是否需要停用它?我没有,它仍然有效,但只是好奇。谢谢。 (3认同)
  • @Bill 我相信这是最佳实践,但不是必需的。这是 virtualenv 的停用脚本:https://github.com/pypa/virtualenv/blob/master/virtualenv_embedded/activate.sh#L4 (2认同)

far*_*rth 33

如果你使用virtualenvwrapper,可以通过以下方式完成:

$ cpvirtualenv <wrong_name> <correct_name>
$ rmvirtualenv <wrong_name>
Run Code Online (Sandbox Code Playgroud)


小智 19

我用来重命名虚拟环境的步骤:

  1. 将整个虚拟环境文件夹复制到新的虚拟环境中。
cp -a old_venv new_venv
Run Code Online (Sandbox Code Playgroud)
  1. sed在文件夹内使用new_venv/bin可直接更改对的引用old_v.env
cd new_venv/bin
# remove cache as sed would otherwise break with the `sed: couldn't edit __pycache__: not a regular file` error
rm -rf __pycache__/
sed -i 's/old_venv/new_venv/g' *
Run Code Online (Sandbox Code Playgroud)
  1. 删除旧的虚拟环境
rm -rf old_venv
Run Code Online (Sandbox Code Playgroud)

可能需要为 jupyter 重新安装 ipykernel,但除此之外一切似乎都工作正常