У меня есть существующая среда в virtualenv, с большим количеством пакетов, но с старой версией Django.
Что делать, если я хочу дублировать эту среду,
поэтому у меня может быть другая среда, в которой я могу установить новую версию Django, но сохраняя все пакеты, которые уже находятся в другой среде?
Самый простой способ - использовать 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, в любых версиях, которые вы указали!
Другой вариант - использовать virtualenv-clone
пакет:
A script для клонирования неперемещаемого virtualenv.
virtualenvwrapper
предоставляет команду для дублирования virtualenv
cpvirtualenv ENVNAME [TARGETENVNAME]
Если вы используете Anaconda, вы можете просто запустить:
conda create --name myclone --clone myenv
Это скопирует myenv
во вновь созданную среду под названием myclone
.
Не можете ли вы просто:
virtualenv -p /path/to/older/venv/bin/python new_venv
и затем использоватьrequirements.txt
который вы сгенерировали послеpip freeze