Instalación de dependencias con pip
Clase 6 de 21 • Curso de Python Intermedio: Comprehensions, Lambdas y Manejo de Errores
Contenido del curso
Clase 6 de 21 • Curso de Python Intermedio: Comprehensions, Lambdas y Manejo de Errores
Contenido del curso
Carlos Eduardo Gomez García
Sergio Iván Piñón Peña
Fernando Torres
Brayan Alexis Lechon Andrango
Joel Sierra Mendoza
Jose Roberto
Antonio Demarco Bonino
Jose Luis Quintero Sanchez
Andres C Puerto
Luis Carlos Mass
Norida Fernanda Muñoz Rivera
Hernan David Rodriguez Mariño
Omar Daniel Centeno
Carlos Celemín
Jesús Enrique Morocoima Marcano
Josue Noha Valdivia
Edwinsiño Joan Josue Castañeda Paz
Miguel Angel Reyes Moreno
Miguel Sanchez
Kevin Mejia
Ruben Garcia
David Granados
Juan Antonio Aramburo Pasapera
María Eugenia Pereira Chévez
Jader Andrés Peláez Gaviria
Williams Israel Chorolque Choque
Oscar Eduardo Palomino Cárdenas
Iván Mauricio Jaimes Niño
Andres Felipe Zabala velez
Josue Farley Lopez Carvajal
Edwin García
Cristian Camilo Rodas Sánchez
Luis Alejandro Vera Hernandez
Ricardo Isaac Valdez Gomez
Erick Alay
Usuario anónimo
Carlos Celemín
Luis Arturo Cruz Cruz
Omar Daniel Centeno
Usuario anónimo
KEYSSI ECHEVARRIA
Lina Hueso
Básicamente, pip es como el npm de JavaScript, y el archivo requeriments.txt es como el package.json de JavaScript.
.
Es importante recordar que esto se debe correr con el entorno virtual activado (avenv), de esta manera todas las dependencias que instalemos se guardaran para este entorno virtual (de lo contrario se guardarían de manera global, que es justo lo que no queremos).
.
Algo importante, si estás manejando git, es bueno siempre ignorar la carpeta venv, esto porque realmente no nos importa subir todo eso al repositorio, puedes mirarlo como que venv es el node_modules de JavaScript, a fin de cuentas, cualquier otro programador que trabaje con nuestro código creará su propio entorno virtual e instalará las dependencias que dejamos en nuestro requeriments.txt.
.
Y un dato curioso es que, el operador > en la terminal es algo especial de UNIX, ya que este operador lo que hace es redirigir la salida de cualquier comando hacia donde lo mandes, por defecto la salida es en la terminal, pero al usar > le dijimos a la terminal que, en lugar de que la salida sea en la terminal, que se redirija al archivo requeriments.txt 👀. Si quieren jugar con ello, pueden hacerlo con este ejemplo: ls -al > test.txt, eso creará un archivo llamado test.txt, y si lo abren verán cómo es que ese comando funciona :D
Que buen aporte , aun que todavía no se mucho de JavaScript, pero ya ando entendiendo mas
Gracias por el aporte, excelentes consejos.
Pero cuidado con el nombre del archivo, el cual debe ser requirements.txt
Resumen | Pip (package installer for python) Nos permite descargar paquetes de terceros para utilizarlos en nuestro enviroment, ademas se puede definir una versión especifica del paquete. |
pip install <paquete> instala el paquete(pandas , matplotlib, bokeh, etc) que se especifique
pip freeze muestra todos los paquetes instalados en tu ambiente virtual
| Si quisiéramos que alguien mas pueda ejecutar nuestro proyecto es importante compartir que librería y versión hemos empleado; eso se realiza con el comando:
pip freeze > requirements.txt
El resultado de pip freeze se escribe en requirements.txt (puedes usar otro nombre pero el mostrado es una buena practica)
|
para instalar paquetes desde un archivo como requirements.txt ejecutamos:
pip install -r requirements.txt
Excelente aporte brother! (y)
Buen resumen bro, gracias
Cuanto más sé de Python más quiero saber. Gracias Facundo.
Tal cual me pasa. Un día de estos, me va dejar mi novia por "la otra" (Platzi).
Cuanto mas escucho a Facundo mas claro es y mas quiero aprender.
Al momento de crear el archivo requirements.txt me salía acceso denegado. La solución fue desactivar el antivirus al momento de crearlo!
(venv) λ pip freeze > requirements.txt Acceso denegado.
Muchas gracias :)
Muchas gracias, tenia el mismo problema.
Módulos populares
Si bien pip puede instalar paquetes de Python, Pipenv es una herramienta de nivel superior que simplifica la administración de dependencias para casos de uso comunes.
Instalar Pyenv:
$ pip install --user pipenv
Instalar dependencias:
$ pipenv install "dependencia"
This does a user installation to prevent breaking any system-wide packages. If pipenv isn’t available in your shell after installation, you’ll need to add the user base’s binary directory to your PATH. On Linux and macOS you can find the user base binary directory by running python -m site --user-base and adding bin to the end. For example, this will typically print ~/.local (with ~ expanded to the absolute path to your home directory) so you’ll need to add ~/.local/bin to your PATH. You can set your PATH permanently by modifying ~/.profile. On Windows you can find the user base binary directory by running py -m site --user-site and replacing site-packages with Scripts. For example, this could return C:\Users\Username\AppData\Roaming\Python36\site-packages so you would need to set your PATH to include C:\Users\Username\AppData\Roaming\Python36\Scripts. You can set your user PATH permanently in the Control Panel. You may need to log out for the PATH changes to take effect.
Gracias por compartir los comandos
buena información hermano
pip
pip install <nombre_paquete>pip freezepip freeze > <archivo.txt> (normalmente requirements)pip install -r <archivo.txt>Muy buen resumen colega, gracias
Si como yo, usas Linux y tuviste el error de EnvironmentError: [Errno 13]
Y tampoco te funcionó la sugerencia de --user
La solución es entrar al archivo pyvenv.cfg
Hacer esta modificación: include-system-site-packages = true
Apagas el entorno virtual, lo vuelves a encender y ya podrás descargar módulos en tu proyecto de Python :D
Gracias por la info bro :D
Muchas gracias, me sirvió bastante. . Además, para los que no saben como abrir el archivo en Ubuntu pueden hacer lo siguiente: .
cd venvls -a para ver los archivos ocultos.code pyvenv.cfg , con esto se les abrirá el editor de texto y podrán editar el archivo.deactivateavenv
.
Y listo, podrán seguir con el curso. :DMódulos populares
Request: Usado para peticiones HTTP. BeautifulSoup4: Permite extraer contenido HTML, se usa para hacer web scraping. Pandas: Se usa para manipular y analizar un gran conjunto de datos. Numpy: Usada para estructuras de datos y tiene funciones matemáticas de alto nivel. Pytest: Permite hacer testing a nuestro código.
pyenv NO es un manejador de dependencias. Es un manejador de versiones de python, es decir te permite instalar, aislar y utilizar diferentes versiones de python en tu sistema, como nvm lo hace en javascript con node por ejemplo. Yo lo uso personalmente en vez de instalar python directamente.
https://github.com/pyenv/pyenv
Otro manejador de dependencias muy utilizado y bueno aparte de pipenv es poetry.
Esta no suele ser la mejor manera de crear un archivo requirements.txt porque las versiones que te pone en el archivo suelen ser específicas para tu distribución. Es decir que si yo creo el requirements.txt en ubuntu y luego quiero crear el ambiente virtual con ese requirements.txt en windows es probable que falle.
Lo mejor es que el requirements.txt contenga sólo los nombres de los paquetes que tú instalaste manualmente y no con las versiones exacta, usualmente sólo la versión mayor y menor. Por ejemplo: pandas=1.2 #Instala una version 1.2.lo mejor compatible con tu SO o pandas~=1.2 #Instala una version compatible pero no pandas=1.2.21a14f porque esta ultima puede que sea una versión específica de tu distribución
Tu comentario es válido si se trata de crear entornos virtuales similares, pero el caso que explica Facundo es ++compartir ++el proyecto que estoy trabajando. Por eso es necesario que TODOS los desarrolladores tengan ++exactamente ++las ++mismas ++dependencias y los ++mismos ++módulos con la ++misma ++versión del proyecto que estoy trabajando. Esta en realidad es el objetivo de crear un entorno virtual. Así el proyecto no va a generar errores por tener diferentes versiones de módulos.
Intente ejecutar el comando :
pip freeze > requiriments.txt
y obtuve el resultado " acceso denegado", qué debo hacer?
en que directorio te encuentras cuando ejecutaste ese comando? por lo general es que no tienes los permisos suficientes en la carpeta en la que te encuentras.
Si lo estás ejecutando en linux y tengas python 3, prueba a usar pip3 freeze > requirements.txt
Con el comando show es posible ver información más detallada de los paquetes instalados, por ejemplo del pytz:
$ pip show pytz Name: pytz Version: 2021.1 Summary: World timezone definitions, modern and historical Home-page: ht tp://pythonhosted.org/pytz Author: Stuart Bishop Author-email: stuart@stuartbishop.net License: MIT Location: /media/ivan/DATA/proyecto_ejemplo/venv/lib/python3.8/site-packages Requires: Required-by: pandas
Y de six:
$ pip show six Name: six Version: 1.15.0 Summary: Python 2 and 3 compatibility utilities Home-page: ht tps://github.com/benjaminp/six Author: Benjamin Peterson Author-email: benjamin@python.org License: MIT Location: /media/ivan/DATA/proyecto_ejemplo/venv/lib/python3.8/site-packages Requires: Required-by: python-dateutil
Gracias por el aporte
Un poco de historia. Pip y venv originalmente no hacían parte de Python, requerían una instalación separada. En las últimas versiones se agregaron al núcleo de Python.
En mi trabajo decidimos usar pipenv porque automatiza la agregación de dependencias al archivo de requirements.
Por ejemplo, con pip si yo instalo una dependencia después tengo que hacer el pip freeze > requirements.txt. Si olvido ese paso instalo la dependencia solo para mí y no funcionará para mis compañeros de trabajo.
Además con pipenv podemos diferenciar fácilmente entre dependencias de desarrollo y de producción para no desplegar con archivos innecesarios, cosa que con pip no encontramos.

Módulos populares o Requests y BeautifulSoup4: Modulos que sirven para hacer tareas de web scraping o Pandas y Numpy : Usadas en la ciencia de datos o Pytest: Sirve para organizar testing
Les comparto la documentación de pip https://docs.python.org/es/3.9/tutorial/venv.html#managing-packages-with-pip