Equivalente en Python de npm o rubygems


He estado buscando un gestor de paquetes que se pueda usar con python. Quiero listar las dependencias del proyecto en un archivo. Por ejemplo ruby usa Gemfile donde puedes usar bundle install. ¿Cómo puedo lograr esto en python?

Author: Dillon Benson, 2012-11-24

4 answers

La herramienta pip se está convirtiendo en el estándar equivalente a las gemas de Ruby. Like distribute, pip utiliza el repositorio de paquetes PyPI (por defecto) para resolver y descargar dependencias. pip puede instalar dependencias desde un archivo que enumere las dependencias del proyecto (llamadas requirements.txt por convención):

pip install -r requirements.txt

También puede "congelar" los paquetes actuales en la ruta de Python usando pip:

pip freeze > requirements.txt

Cuando se utiliza en combinación con el paquete virtualenv, puede crear un proyecto de forma fiable Entornos Python con las dependencias requeridas de un proyecto.

 45
Author: Barry Wark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-16 21:24:18

Pipenv

(Sé que es una vieja pregunta, y ya tiene una respuesta, pero para cualquiera que venga aquí buscando una respuesta diferente como yo.)

He encontrado un muy buen equivalente para npm, se llama pipenv. Maneja ambos requisitos virtualenv y pip al mismo tiempo por lo que es más como npm.


Caso de Uso simple

pip install pipenv

Entonces puede hacer un nuevo virtualenv con la tercera versión de python, así como hacer un pipfile que se llenará con los requisitos de sus proyectos y otras cosas:

pipenv install --three

Usando su virtualenv creado:

pipenv shell

Instalando un nuevo paquete python:

pipenv install requests

Ejecutar su archivo. py es como:

pipenv run python somefile.py

Puedes encontrar su doc aquí.

 19
Author: Soorena,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-09 08:08:49

Python usa pip para un gestor de paquetes. El comando pip install tiene una opción -r <file> para instalar paquetes desde el archivo de requisitos especificado.

Comando de instalación:

pip install -r requirements.txt

Ejemplo requirements.txt contenido:

Foo >= 1.2
PickyThing <1.6,>1.9,!=1.9.6,<2.0a0,==2.4c1
SomethingWhoseVersionIDontCareAbout

Consulte la sección Requisitos de análisis de los documentos para obtener una descripción completa del formato: https://pip.pypa.io/en/stable/user_guide/#requirements-files

 7
Author: user2472759,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-12 11:24:44

Así es como restrinjo el alcance de pip al proyecto actual. Se siente como lo contrario si vienes de NodeJS npm o PHP composer donde especificas explícitamente instalaciones globales con -g o --global.

Si aún no tiene virtualenv instalado, instálelo globalmente con:

 pip install virtualenv

Cada proyecto Python debe tener su propia instalación virtualenv. Es fácil configurar uno, solo cd a la raíz de tu proyecto y:

 python3 -m virtualenv env  # creates env folder with everything you need

Activar virtualenv:

 source env/bin/activate

Ahora, cualquier interacción con pip está contenida dentro de su proyecto.

Ejecuta pip install package_name==version para cada una de tus dependencias. Están instalados en ./env/lib/python3.x/site-packages/

Cuando desee guardar las dependencias de su proyecto en un archivo, ejecute:

 pip freeze > requirements.txt

En realidad no necesitas -l o --local si estás en un virtualenv específico del proyecto activado (que deberías estar).

Ahora, cuando quieras instalar tus dependencias desde requirements.txt, configura tu virtualenv, y corre:

 pip install -r requirements.txt

Eso es todo.

 0
Author: LXXIII,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-09 04:08:37