En nodejs, puedo hacer npm install package --save-dev
para guardar el paquete instalado en el paquete.
¿Cómo logro lo mismo en el administrador de paquetes Python 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 pip install package --save-dev requirements.pip
.
pip freeze > requirements.pip
npm install package --save-dev
combina la instalación y la adición al archivo de requisitos node_npm al mismo tiempo. Es más útil. Conpip freeze
tengo que hacer dos comandos para hacer lo mismo: 1)pip install package
2)pip freeze > requirements.pip
--save
opción.Respuestas:
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-s
argumento y se congele en turequirements.txt
archivo automáticamente.Editar 1
Desde que escribí esto, no ha habido ningún cambio en proporcionar una
--save-dev
opción automática similar a NPM, sin embargo, Kenneth Reitz (autor derequests
y muchos más) ha publicado más información sobre un mejor flujo de trabajo de pip para manejar mejor laspip
actualizaciones.Editar 2
Vinculado desde el artículo "mejor flujo de trabajo de pip" anterior, ahora se recomienda usar
pipenv
para administrar requisitos y entornos virtuales. Habiendo usado esto mucho recientemente, me gustaría resumir lo simple que es la transición:Instalar
pipenv
(en Mac)pipenv
crea y gestiona sus propios entornos virtuales, por lo que en un proyecto con uno existenterequirements.txt
, la instalación de todos los requisitos (uso Python3.7 pero puede eliminarlos--three
si no lo hace) es tan simple como:Activar virtualenv para ejecutar comandos también es fácil
Los requisitos de instalación actualizarán automáticamente el
Pipfile
yPipfile.lock
También es posible actualizar paquetes desactualizados
Recomiendo comprobarlo especialmente si proviene de un
npm
fondo, ya que tiene una sensación similarpackage.json
ypackage-lock.json
fuente
pipenv
permite especificar undev-packages
en suPipfile
y / o uso--dev
(o-d
) desde la línea de comandos. egpipenv install --dev nose2
Esta línea simple es un punto de partida. Puede crear fácilmente un comando bash para reutilizar el PAQUETE en la línea.
Gracias a @devsnd por el sencillo ejemplo de la función bash:
Para usarlo, solo ejecuta:
fuente
P=Flask pip install $P && pip freeze | grep $P >> requirements.txt
He creado un paquete de Python que se ajusta al pipm real
pip
llamado . Todos los comandos funcionarán tal cual, además se reflejarán en el archivo de requisitos. A diferencia de (herramienta similar que encontré y que no pude usar) puede manejar muchos archivos y entornos (prueba, desarrollo, producción, etc.). También tiene el comando para actualizar todas / cualquiera de sus dependencias.pip
pip-save
instalación
pipm install pkg-name
instalación como dependencia de desarrollo
pipm install pkg-name --dev
instalación como dependencia de prueba
pipm install pkg-name --test
eliminación
pipm uninstall pkg-name
actualiza todas tus dependencias
pipm update
instale todas sus dependencias desde el archivo de requisitos
pipm install
incluyendo dependencias de desarrollo
pipm install --dev
fuente
Actualización: aparentemente, pipenv no cuenta con el respaldo oficial de los mantenedores de Python , y la página vinculada anteriormente es propiedad de una organización diferente. La herramienta tiene sus pros y sus contras, pero la solución a continuación aún logra el resultado que busca el OP.
pipenv es una herramienta de administración de dependencias que envuelve
pip
y, entre otras cosas, proporciona lo que está pidiendo:https://pipenv.kennethreitz.org/en/latest/#example-pipenv-workflow
A
Pipfile
es un equivalente directo depackage.json
, mientras quePipfile.lock
corresponde apackage-lock.json
.fuente
Hice un truco rápido
pip
para agregar la--save
opción de 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.
fuente
puede guardarlo manualmente en un Makefile (o un archivo de texto y luego importarlo en su Makefile):
y luego solo corro
make install
fuente
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
fuente
¿Qué tal hacer una función de shell para hacer esto? Agregue el siguiente código a su
~/.profile
o~/.bashrc
luego ejecutar
source ~/.profile
osource ~/.bashrc
importarlo a su terminal actualcuando desee instalar y guardar un paquete, simplemente ejecute, por ejemplo
pips requests
. después de instalar el paquete, su versión se guardarárequirements.txt
en su directorio actual.fuente