En nodejs, puedo hacer npm install package --save-devpara 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.pipjusto después de instalar el paquete usando algo como pip install package --save-dev requirements.pip.

pip freeze > requirements.pipnpm install package --save-devcombina la instalación y la adición al archivo de requisitos node_npm al mismo tiempo. Es más útil. Conpip freezetengo que hacer dos comandos para hacer lo mismo: 1)pip install package2)pip freeze > requirements.pip--saveopción.Respuestas:
No hay un equivalente con
pip.La mejor manera es
pip install package && pip freeze > requirements.txtPuede 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-sargumento y se congele en turequirements.txtarchivo automáticamente.Editar 1
Desde que escribí esto, no ha habido ningún cambio en proporcionar una
--save-devopción automática similar a NPM, sin embargo, Kenneth Reitz (autor derequestsy muchos más) ha publicado más información sobre un mejor flujo de trabajo de pip para manejar mejor laspipactualizaciones.Editar 2
Vinculado desde el artículo "mejor flujo de trabajo de pip" anterior, ahora se recomienda usar
pipenvpara 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)pipenvcrea 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--threesi 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
PipfileyPipfile.lockTambién es posible actualizar paquetes desactualizados
Recomiendo comprobarlo especialmente si proviene de un
npmfondo, ya que tiene una sensación similarpackage.jsonypackage-lock.jsonfuente
pipenvpermite especificar undev-packagesen suPipfiley / o uso--dev(o-d) desde la línea de comandos. egpipenv install --dev nose2Esta 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.txtHe creado un paquete de Python que se ajusta al pipm real
pipllamado . 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.pippip-saveinstalación
pipm install pkg-nameinstalación como dependencia de desarrollo
pipm install pkg-name --devinstalación como dependencia de prueba
pipm install pkg-name --testeliminación
pipm uninstall pkg-nameactualiza todas tus dependencias
pipm updateinstale todas sus dependencias desde el archivo de requisitos
pipm installincluyendo dependencias de desarrollo
pipm install --devfuente
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
pipy, entre otras cosas, proporciona lo que está pidiendo:https://pipenv.kennethreitz.org/en/latest/#example-pipenv-workflow
A
Pipfilees un equivalente directo depackage.json, mientras quePipfile.lockcorresponde apackage-lock.json.fuente
Hice un truco rápido
pippara agregar la--saveopció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 installfuente
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.txtfuente
¿Qué tal hacer una función de shell para hacer esto? Agregue el siguiente código a su
~/.profileo~/.bashrcluego ejecutar
source ~/.profileosource ~/.bashrcimportarlo 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.txten su directorio actual.fuente