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
Hice un hack rápido en pip
para agregar --save
opción para instalar / desinstalar comandos.
Por favor, eche un vistazo a mi blog para obtener más información sobre este truco: http://blog.abhiomkar.in/2015/11/12/pip-save-npm-like-behaviour-to-pip/
Instalación (GitHub): https://github.com/abhiomkar/pip-save
Espero que esto ayude.
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