tools node python node.js pip

python - node - ¿Cuál es el equivalente de pip al paquete de instalación `npm--save-dev`?



serverless-python-requirements (8)

En nodejs, puedo hacer el npm install package --save-dev para guardar el paquete instalado en el paquete.

¿Cómo logro lo mismo en Python manager pip ? Me gustaría guardar el nombre del paquete y su versión en, digamos, requirements.pip justo después de instalar el paquete usando algo como el pip install package --save-dev requirements.pip .


¿Qué hay de hacer una función de shell para hacer esto? Agregue el código siguiente a su ~/.profile o ~/.bashrc

pips() { local pkg=$1 if [ -z "$1" ]; then echo "usage: pips <pkg name>" return 1 fi local _ins="pip install $pkg" eval $_ins pip freeze | grep $pkg -i >> requirements.txt }

luego ejecuta source ~/.profile o source ~/.bashrc para importarlo a tu terminal actual

cuando desee instalar && guardar un paquete, simplemente ejecute, por ejemplo, pips requests . después de instalar el paquete, su versión se guardará en requirements.txt en su directorio actual.


Esta simple línea es un punto de partida. Puede construir fácilmente un comando bash para reutilizar el PAQUETE en la línea.

pip install PACKAGE && pip freeze | grep PACKAGE >> requirements.txt


Estoy usando esta pequeña línea de comando para instalar un paquete y guardar su versión en requirements.txt : pkg=package && pip install $pkg && echo $(pip freeze | grep -i $pkg) >> requirements.txt


He creado un paquete de Python que se ajusta a las clases de pip reales llamadas pipm Todos los comandos de pip funcionarán tal como están, además de que se guardarán en el archivo de requisitos. A diferencia de pip-save , puede manejar muchos archivos y entornos (prueba, desarrollo, producción, etc.). También tiene el comando de actualizar todas / cualquiera de sus dependencias.

instalación

pipm install pkg-name

instalación como dependencia de desarrollo

pipm install pkg-name --dev

instalación como prueba de dependencia

pipm install pkg-name --test

eliminación

pipm uninstall pkg-name

actualiza todas tus dependencias

pipm update

instala todas tus dependencias del archivo de requisitos

pipm install

incluidas las dependencias de desarrollo

pipm install --dev



No hay un equivalente con pip .

La mejor manera es pip install package && pip freeze > requirements.txt

Puede ver todas las opciones disponibles en su página de documentación .

Si realmente te molesta, no sería demasiado difícil escribir un script bash personalizado ( pips ) que tome un argumento -s y se congele en tu archivo requirements.txt automáticamente.

Editar 1

Desde que se escribió esto, no ha habido ningún cambio en proporcionar una --save-dev auto --save-dev similar a NPM; sin embargo, Kenneth Reitz (autor de requests y muchos más) ha publicado más información sobre un mejor flujo de trabajo pip para manejar mejor pip actualizaciones de pip .


Uno de los problemas con el uso de pip freeze > requirements.txt es que no solo nuestras dependencias directas sino también sus dependencias se copian al archivo de requisitos y, por lo tanto, resulta bastante difícil determinar los requisitos exactos para su aplicación / proyecto.

He creado un pequeño paquete python pip-save que es un comando wrapper sobre pip y solo agrega / elimina su dependencia del archivo de requisitos.

Instalación

$ pip install pip-save

Utilizar

Para instalar un paquete y agregarlo a sus requisitos.txt

$ pip-save install [<list of packages>]

Para actualizar un paquete

$ pip-save install --upgrade [<list of packages>]

Para desinstalar un paquete y eliminarlo de sus requisitos.txt

$ pip-save uninstall [<list of packages>]

Para instalar un paquete de VCS y agregarlo a su archivo de requisitos

$ pip-save install -e <url of the repo>


puede guardarlo manualmente en un Makefile (o un archivo de texto y luego importarlo en su Makefile):


PYTHON=.venv/bin/python # path to pyphon PIP=.venv/bin/pip # path to pip SOURCE_VENV=. .venv/bin/activate install: virtualenv .venv $(SOURCE_VENV) && $(PIP) install -e PACKAGE $(SOURCE_VENV) && $(PIP) install -r requirements.txt # other required packages

y luego solo ejecuta make install