Создайте копию virtualenv локально без установки pip
Иногда возникает необходимость создать копию выхода из virtualenv, чтобы протестировать дополнительные функции нашего проекта.
В таком случае нам нужно создать копию существующей среды и добавить еще несколько требований.
Один из способов создать копию существующего virtualenv упомянут ниже:
# while using existing virtualenv
(oldenv): pip freeze > requirements.txt
# after creating and logged-in to new virtualenv
(newenv): pip install -r requirements.txt
# where requirements.txt is the same file created using (oldenv)
Но я лично не предпочитаю этот путь. Зачем?? Из-за установки тех же пакетов, которые уже есть, которые мы можем использовать повторно. Повторное использование или, скажем, копирование не только сократит дополнительное время и усилия, но также уменьшит использование полосы пропускания Интернета до нуля, особенно для пользователей с ограниченным и медленным Интернетом.
Здорово! Тогда каковы другие способы создания копии существующего virtualenv локально?
Я знаю два других способа, которые я упоминаю ниже. Надеюсь, они будут полезны.
2 ответа
Первый способ создать копию существующего virtualenv, скажем, ProjectAenv
:
Скопируйте ProjectAenv в другое имя или каталог:
cp -R /home/sk/Path1/ProjectAenv /home/sk/Path2/ProjectBenv
где
/home/sk/Path1/ProjectAenv
это абсолютный путь в Virtualenv ProjectAenvЗатем откройте
activate
файл недавно скопированного ProjectBenv с использованием предпочитаемого вами редактора:gedit /home/sk/Path2/ProjectBenv/bin/activate
Найдите строку VIRTUAL_ENV="/home/sk/Path1/ProjectAenv" и замените ее на:
VIRTUAL_ENV="/home/sk/Path2/ProjectBenv"
Сохраните и закройте файл.
Это оно!! Ваша новая среда ProjectBenv скопирована из ProjectAenv и готова к использованию. Я использую этот способ в течение долгого времени и никогда не возникало никаких проблем, хотя я рекомендую второй способ копирования.
Второй способ создать копию существующего virtualenv(рекомендуется):
Скачать virtualenv-клон:
wget https://pypi.python.org/packages/source/v/virtualenv-clone/virtualenv-clone-0.2.6.tar.gz tar -zxvf virtualenv-clone-0.2.6.tar.gz cd virtualenv-clone-0.2.6
Установите virtualenv-clone внутри любой среды virtualenv:
virtualenv newenv # create a new environment. You can use any existing one. source newenv/bin/activate # login to newenv (newenv): python setup.py install # install virtualenv-clone in newenv # be sure that you are inside the directory "virtualenv-clone-0.2.6"
virtualenv-clone
будет установлен внутри newenv.Теперь, войдя в систему как newenv, мы можем создать копию любой существующей среды. Например, создание копии ProjectAenv:
(newenv): virtualenv-clone ProjectAenv ProjectBenv (newenv): deactivate # to come out from newenv.
Пожалуйста, комментируйте любые предложения или изменения.
Просто хочу добавить в ручной метод @SauravKumar. Исправление пути в activate
Сценарий необходим, но не достаточен. Вам также нужно исправить путь в других скриптах, таких как pip
, pip2
, так далее.
Самое простое, что нужно сделать - это найти свой путь в виртуальной среде. bin
папка как:
root@www:/var/www/app/venv/bin# grep "/tmp/app/HadithHouseWebsite/venv" * -R
activate:VIRTUAL_ENV="/tmp/app/HadithHouseWebsite/venv"
activate.csh:setenv VIRTUAL_ENV "/tmp/app/HadithHouseWebsite/venv"
activate.fish:set -gx VIRTUAL_ENV "/tmp/app/HadithHouseWebsite/venv"
django-admin:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
django-admin.py:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
easy_install:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
easy_install-2.7:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pbr:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip2:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip2.7:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
python-config:#!/tmp/app/HadithHouseWebsite/venv/bin/python
sqlformat:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
wheel:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
Затем просмотрите эти файлы и измените те, которые вам нужны. В основном вам нужно изменить activate*
файлы и pip*
файлы.
Надеюсь это поможет.