如何在Python中重命名virtualenv?

时间:2017-04-06 13:17:04

标签: python directory virtualenv

我在使用以下内容初始化时错误拼写了virtualenv的名称:

$ virtualenv vnev

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

$ mv vnev venv
$ . venv/bin/activate
(vnev) $ deactivate

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

6 个答案:

答案 0 :(得分:83)

默认情况下,virtualenv不支持重命名环境。删除virtualenv目录并使用正确的名称创建一个新目录更安全。您可以通过以下方式执行此操作:

  1. 激活您的virtualenv:source vnev/bin/activate
  2. 创建当前已安装软件包的requirements.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
  7. 如果无法重新创建,则可以使用virtualenv-mv等第三方工具。

    或者,您可以使用virtualenvwrapper提供cpvirtualenv命令来复制或重命名virtualenvs。

答案 1 :(得分:26)

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

$ cpvirtualenv <wrong_name> <correct_name>
$ rmvirtualenv <wrong_name>

另外,仅供参考,重命名conda virtualenvironment,请查看this question

答案 2 :(得分:1)

来自 virtualenv-wrapper 的

cpvirtualenv 在我尝试运行 virtualenv-clone 时出错,但直接运行它可以正常工作:

virtualenv-clone ~/.virtualenvs/oldname ~/.virtualenvs/newname
workon newname
rmvirtualenv oldname

无需重新安装任何东西。

答案 3 :(得分:1)

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

  1. 将整个虚拟环境文件夹复制到新的虚拟环境中。
cp -a old_venv new_venv
  1. 使用 sed 文件夹中的 new_venv/bin 直接更改对 old_v.env 的引用
cd new_venv/bin
sed -i 's/old_venv/new_venv/g' *
  1. 删除旧的虚拟环境
rm -rf old_env

可能需要为 jupyter 重新安装 ipykernel,否则一切似乎都正常

答案 4 :(得分:0)

我的回答类似于使用旧的依赖关系创建一个新的虚拟环境,但是这个简洁。

  1. 使用conda将旧环境(例如venv_1)克隆到新环境(例如venv_2)。

    conda create -n venv_2 --clone venv_1

这将创建一个新的环境venv_2克隆venv_1。因此,获取包/依赖项没有单独的任务。一步就足够了。

  1. 删除旧的虚拟环境。 [如果您仍然想保留旧环境,则此步骤是可选的]

    rm -rf“旧虚拟环境的完全限定路径”

因此,只需1/2步就可以完成任务。

答案 5 :(得分:0)

ForeignKey中,我可以通过在profile内编辑profile__user=self.request.user来轻松重命名虚拟环境:

  1. 备份原始windows(我复制并粘贴然后重命名为activate.bat)。

  2. 右键单击并编辑scripts\

  3. activate.bat变量从以下位置更改:

    BACKUP_activate.bat

    进入

    activate.bat
  4. VIRTUAL_ENV变量从以下位置更改:

     set VIRTUAL_ENV=C:\some_dir\old_venv_name
    

    进入

     set VIRTUAL_ENV=C:\some_dir\new_venv_name
    
  5. 保存已编辑的批处理文件

注意:我的解决方案应该可以工作,并且可以保存PROMPT来设置新的虚拟环境,我不了解任何脚本知识,或者在Linux或其他操作系统中什么都不知道