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 de 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
.
Ewan
No hay un equivalente con pip
.
La mejor manera es pip install package && pip freeze > requirements.txt
Puedes ver todas las opciones disponibles en su página de documentación.
Si realmente le molesta, no sería demasiado difícil escribir un script de bash personalizado (pips
) que toma un -s
argumento y se congela a su requirements.txt
archivo automáticamente.
Editar 1
Desde que escribo esto no ha habido ningún cambio en proporcionar un auto --save-dev
opción 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 de pip para manejar mejor pip
actualizaciones
Editar 2
Vinculado desde el artículo “mejor flujo de trabajo de pip” anterior, ahora se recomienda su uso pipenv
para gestionar requisitos y entornos virtuales. Habiendo usado esto mucho recientemente, me gustaría resumir cuán simple es la transición:
Instalar pipenv
(en Mac)
brew install pipenv
pipenv
crea y administra sus propios entornos virtuales, por lo que en un proyecto con un requirements.txt
instalando todos los requisitos (uso Python3.7 pero puede eliminar el --three
si no lo hace) es tan simple como:
pipenv --three install
Activar virtualenv para ejecutar comandos también es fácil
pipenv shell
Los requisitos de instalación actualizarán automáticamente el Pipfile
y Pipfile.lock
pipenv install <package>
También es posible actualizar paquetes obsoletos
pipenv update
te lo recomiendo mucho Comprobándolo especialmente si viene de un npm
fondo ya que tiene una sensación similar a package.json
y package-lock.json
-
Tenga en cuenta que esto también guardará dependencias de dependencias que, con el tiempo, podrían no ser necesarias porque la dependencia dejó de usarlo.
-Patricio Bassut
26 de abril de 2015 a las 6:46
-
Esto no parece abordar el aspecto –save-dev de la pregunta original que le permite tener diferentes dependencias para el desarrollo local frente a la producción. ¿Cómo puedes lograr eso con pipenv?
– jeznag
5 de marzo de 2020 a las 5:20
-
@jeznag
pipenv
le permite especificar undev-packages
en tusPipfile
y/o uso--dev
(o-d
) desde la línea de comandos. p.ejpipenv install --dev nose2
– Ewan
5 de marzo de 2020 a las 6:20
Karim N. Gorjux
Esta simple línea es un punto de partida. Puede crear fácilmente un comando bash para reutilizar el PAQUETE en la línea.
pip install PACKAGE && pip freeze | grep PACKAGE >> requirements.txt
Gracias a @devsnd por el ejemplo simple de la función bash:
function pip-install-save {
pip install $1 && pip freeze | grep $1 >> requirements.txt
}
Para usarlo, simplemente ejecute:
pip-install-save some-package
-
mis cinco centavos
P=Flask pip install $P && pip freeze | grep $P >> requirements.txt
– GBrian
18 mayo 2020 a las 17:39
-
¿Qué pasa con la versión del paquete?
– Anis LOUNIS alias AnixPasBesoin
7 mar a las 15:33
-
El comando pip freeze también recupera la versión del paquete
– Karim N. Gorjux
9 de marzo a las 19:46
-
Encontré esta respuesta muy útil. Estoy en un entorno de Windows, así que aquí hay una versión de Powershell de la función bash:
pip install $package; pip freeze | select-string $package -Raw >> $requirementsFile
.– Rob H.
25 abr a las 17:46
Raja del Norte
He creado un paquete de python que envuelve el actual pip
llamó pipm
. Todos pip
los comandos funcionarán tal cual, además se reflejarán en el archivo de requisitos. A diferencia de pip-save
(inactivo por algún tiempo), una herramienta similar que encontré y no pude usar, puede manejar muchos archivos y entornos (prueba, desarrollo, producción, etc.). También tiene un comando para 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 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
-
En realidad, ¡un desarrollo bastante interesante!
– artu-hnrq
17 de febrero de 2021 a las 2:45
dskrvk
Actualizar: aparentemente, pipenv no está respaldado oficialmente por los mantenedores de Pythony el página previamente enlazada es propiedad de una organización diferente. La herramienta tiene sus pros y sus contras, pero la siguiente solución aún logra el resultado que busca el OP.
pipenv es una herramienta de gestión de dependencias que envuelve pip
y, entre otras cosas, proporciona lo que estás pidiendo:
https://pipenv.kennethreitz.org/en/latest/#example-pipenv-workflow
$ pipenv install <package>
Esto creará un Pipfile si no existe uno. Si existe, se editará automáticamente con el nuevo paquete que proporcionó.
A Pipfile
es un equivalente directo de package.json
tiempo Pipfile.lock
corresponde a package-lock.json
.
Evan Levesque
puedes a mano guárdelo en un Makefile (o un archivo de texto y luego impórtelo 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 corre make install
-
Estoy totalmente de acuerdo con este enfoque.
– eleijónmarck
31 de enero de 2020 a las 10:49
antonio pierotti
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
-
Estoy totalmente de acuerdo con este enfoque.
– eleijónmarck
31 de enero de 2020 a las 10:49
abhiomkar
Hice un truco rápido en pip
agregar --save
Opción para instalar/desinstalar comandos.
Por favor, eche un vistazo a mi blog para obtener más información acerca de 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.
pip freeze > requirements.pip
– falsetru
2 oct 2013 a las 11:37
Esto no es lo mismo.
npm install package --save-dev
combina la instalación y la adición al archivo de requisitos de node_npm al mismo tiempo. Es más práctico. Conpip freeze
Tengo que hacer dos comandos para hacer lo mismo: 1)pip install package
2)pip freeze > requirements.pip
– hllau
2 de octubre de 2013 a las 12:03
pipa tiene tema sobre
--save
opción.– Rutsky
16 de septiembre de 2015 a las 14:28
Si uso setup.py para los requisitos, he creado un pequeño módulo para congelar las versiones de su paquete en setup.py.
– Adán Gold
16 de enero de 2019 a las 8:41
Puede crear un entorno e instalar sus dependencias de producción, y clonarlo para crear un entorno de desarrollo e instalar dependencias de desarrollo. Pero tienes que sincronizarlos manualmente. O instale la dependencia de desarrollo globalmente. No se puede compartir entre los desarrolladores, pero se usará por completo. Node.js lo hace mejor en este caso.
– 27px
28 de enero a las 11:13