如何复制virtualenv

183 投票
9 回答
166624 浏览
提问于 2025-04-17 02:24

我有一个已经创建好的虚拟环境,这里面装了很多软件包,但Django的版本比较旧。

我想要做的是复制这个环境,这样我就可以拥有一个完全相同的软件包的环境,但是Django的版本是新的。我该怎么做呢?

9 个回答

20

最简单的方法是使用 virtualenv-clone 这个工具包。

如果你想把 venv1 复制到 venv2,可以按照以下步骤操作:

  1. venv1 或者一个临时的虚拟环境 venv_dummy 中安装 virtualenv-clone。要创建 venv_dummy,可以使用:

    python -m virtualenv venv_dummy
    source venv_dummy/bin/activate
    
  2. 安装 virtualenv-clone 的命令是:

    (venv_dummy): pip install virtualenv-clone
    
  3. 接下来,把 venv1 复制到 venv2,可以用:

    (venv_dummy): virtualenv-clone venv1/ venv2/
    
39

另一个选择是使用 virtualenv-clone 这个工具:

这是一个用来复制不能移动的虚拟环境的脚本。

248

最简单的方法是使用pip来生成一个需求文件。这个需求文件其实就是一个列出了你想安装(或者已经安装)的所有Python包的文件,还有它们的版本信息。

要生成这个需求文件,你需要进入你原来的虚拟环境,然后运行:

pip freeze > requirements.txt

这样就会为你生成一个requirements.txt文件。如果你用你喜欢的文本编辑器打开这个文件,你会看到类似下面的内容:

Django==1.3
Fabric==1.0.1
etc...

接下来,把里面写着Django==x.x的那一行改成Django==1.3(或者你想在新虚拟环境中安装的任何版本)。

最后,激活你的虚拟环境,然后运行:

pip install -r requirements.txt

这样pip就会自动下载并安装你在requirements.txt文件中列出的所有Python模块,按照你指定的版本来安装!

撰写回答