2015-03-09 2 views
2

У меня есть приложение Django, развернутое в virtualenv. Я хочу перенести это приложение на другой сервер, и для этого мне нужно установить все необходимые пакеты python в новую среду.Получить команду установки пакета для всех пакетов, установленных внутри virtualenv

Есть ли инструмент для создания команды установки пакета для установки всех установленных пакетов в virtualenv?

Например, если я только установил Django и Gunicorn в virtualenv, запустив нужный инструмент будет выводить follwing:

пип установки Джанго == 1.6.6. gunicorn == 19.1.0 (включая версии)

ответ

6

Создание требования:

pip freeze > requirements.txt 

Установите их:

pip install -r requirements.txt 
1

Активация виртуальной среды

$ source .venv/bin/activate 

Затем запустите pip freeze

(.venv)[email protected]:~/$ pip freeze 
astroid==1.3.4 
Babel==1.3 
beautifulsoup4==4.3.2 
coverage==3.7.1 
d2to1==0.2.11 
elasticsearch==1.4.0 
flake8==2.3.0 
netaddr==0.7.13 
netifaces==0.10.4 
nose==1.3.4 
oslo.config==1.6.0 
oslo.i18n==1.3.1 
oslo.serialization==1.2.0 
oslo.utils==1.2.1 
pbr==0.10.0 
pecan==0.6.1 
pep8==1.6.2 
pika==0.9.14 
prettytable==0.7.2 
pyflakes==0.8.1 
Pykka==1.2.0 
pylint==1.4.1 
python-keystoneclient==0.11.2 
pytz==2014.10 
requests==2.5.0 
setuptools-git==1.1 
simplegeneric==0.8.1 
singledispatch==3.4.0.3 
six==1.9.0 
stevedore==1.1.0 
urllib3==1.10.2 
waitress==0.8.9 
WebOb==1.4 
WebTest==2.0.9 
WSME==0.5b6 

Это даст вам весь установленный пакет в этом venv.

0

Первый активный виртуальный окр

. env/bin/active 

получить список установленных пакетов в virtualenv

pip freeze > list.txt 

в другой среде, если вы хотите установить пакеты

pip install -r list.txt 

Таким образом, вы могли бы wirte маленький скрипт, чтобы делать эти вещи

# -*- coding: utf-8 -*- 
import sys 
import os 
filename = "requirements.txt" 

def getlist(): 
    os.system("pip freeze > %s" %(filename)) 

def install(): 
    os.system("pip install -r %s" %(filename)) 

if __name__ == '__main__': 
    if len(sys.argv) <= 1: 
     print 'Please choose,list or install' 
     exit(0) 
    if sys.argv[1] == "list": 
     getlist() 
    elif sys.argv[1] == "install": 
     install() 
    else: 
     print 'Please input list or install' 
Смежные вопросы