2010-02-23 29 views
14

Tengo un script que crea un virtualenv, instala distribute y pip y clona un repositorio git opcionalmente.PIP: Instalar solo las dependencias

Ahora tengo el proyecto en el que estaré trabajando, instalado. Pero sus dependencias no están instaladas. ¿Cómo puedo hacer que pip instale todas las dependencias como si hubiera emitido un pip install MyApp?

EDIT: Aparentemente mi pregunta es un duplicado de this one.

No estoy seguro pero pip install -e . parece hacer lo que quiero sin demasiadas cosas extra por ahí. Preferiría que mi código no estuviera vinculado desde site-packages.

+3

* Tengo un script que crea un virtualenv, instala distribuye y pip en él (...) *. ¿Sabes que puedes hacer las 3 cosas con 'pip -E VENV_DIR pip' ya que pip instala por defecto pip y lo distribuye en el nuevo entorno creado? –

+0

¡Consejo genial! Aunque ya no uso el guión mencionado. – muhuk

Respuesta

16

En mi paquete de emisión de raíz pip install -e . instala dependencias.

+0

Eso es un efecto secundario bastante serio. '-e' se instala en modo editable, lo que significa que el paquete se vincula desde los paquetes del sitio en lugar de copiarse. Espero que este enfoque cause problemas extraños y sutiles cuando intentes instalar el paquete de verdad, especialmente si no pip uninstall' primero. –

9

Debe usar el archivo de requisitos de pip.

Esencialmente, colocar todos los requisitos, uno en cada línea en un archivo y pasar eso a pip usando el comando

pip install -r requirements.txt 

¿Qué más, si usted tiene un entorno estándar, pipa de la realidad puede volcar un archivo de este tipo de instalaciones existentes con el comando:

pip freeze 

Se puede poner el archivo generado de este modo directamente en los requisitos de pepita, y llamar al orden anterior de su script de implementación.

Bastante bien, ¿o no? :)

+8

Genial, pero no responde mi pregunta. No estoy buscando una forma de definir dependencias. Leer preguntas por completo y cuidadosamente ayuda a recorrer un largo camino para proporcionar respuestas correctas. – muhuk

+6

Espera, puedes poner todas tus dependencias en un archivo y pedirle a pip que las instale todas para ti. ¿No es eso lo que estás buscando? Si no, no entendí correctamente tu pregunta. Incluso ahora. –

+1

siendo la diferencia donde se especifican las 'dependencias': en los requisitos.txt (donde especificaría "myrepo == 1.0.1" o lo que sea) O en el archivo setup.py del paquete en myrepo que desea instalar. Si ya tiene el repositorio en la mano, entonces solo tiene sentido instalar las dependencias. – andy

Cuestiones relacionadas