Как продублировать virtualenv

У меня есть существующая среда в virtualenv, с большим количеством пакетов, но с старой версией Django.

Что делать, если я хочу дублировать эту среду,
поэтому у меня может быть другая среда, в которой я могу установить новую версию Django, но сохраняя все пакеты, которые уже находятся в другой среде?

Ответ 1

Самый простой способ - использовать pip для создания файла требований. Файл требований в основном представляет собой файл, содержащий список всех пакетов python, которые вы хотите установить (или уже установлен в случае файла, сгенерированного пипом), и в каких версиях он находится.

Чтобы создать файл требований, перейдите в свой первоначальный virtualenv и запустите:

pip freeze > requirements.txt

Это приведет к созданию файла requirements.txt для вас. Если вы откроете этот файл в своем любимом текстовом редакторе, вы увидите что-то вроде:

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

Теперь отредактируйте строку с надписью Django==x.x, чтобы сказать Django==1.3 (или любую другую версию, которую вы хотите установить в новом виртуальном каталоге).

Наконец, активируйте свой новый virtualenv и запустите:

pip install -r requirements.txt

И pip автоматически загрузит и установит все модули python, перечисленные в файле requirements.txt, в любых версиях, которые вы указали!

Ответ 2

Другой вариант - использовать virtualenv-clone пакет:

A script для клонирования неперемещаемого virtualenv.

Ответ 4

Не можете ли вы просто:

  • Скопировать существующий каталог виртуального env в новый
  • Обновить до нового Django?

Ответ 5

Если вы используете Anaconda, вы можете просто запустить:

conda create --name myclone --clone myenv

Это скопирует myenv во вновь созданную среду под названием myclone.