¿Qué es un ambiente virtual?
Clase 9 de 20 • Curso de Python: PIP y Entornos Virtuales
Contenido del curso
Clase 9 de 20 • Curso de Python: PIP y Entornos Virtuales
Contenido del curso
Yuli Alexandra Pulido Castañeda
Sergio Andrés Piratoba Forero
Juan R. Vergara M.
Michelle Verano
Jeinfferson Bernal G
Patricio Sánchez Fernández
Benjamín Cortés
Gibran Alonso Pérez Favela
Erick Alay
Diego Quintana Hernández
Daniel Dobles
Miguel Angel Reyes Moreno
Juan Pablo Lopez Fracaro
Roberto Jassiel Montes Gutierrez
José B. Méndez Padín
Bryan Carvajal
Diego Quintana Hernández
Ian Cristian Ariel Yané
José Carlos Vielman Mallada
Jhon Freddy Tavera Blandon
Randhal Smith Ramirez Orozco
William Schnaider Torres Bermon
William Schnaider Torres Bermon
Jaime Escobedo Vargas
Ricardo Daniel Baró Soto
Adrián Felipe Rueda Castellanos
Pablo Garrido Hernandez
Sebastián Olivares
Julio Coronado
Pablo Garrido Hernandez
Hola Chicos! :D Instalar a nivel global puede causar distintos problemas al momento de manejar diferentes proyectos, por ejemplo para algunos proyectos necesitaras otro tipo de version, libreria o modulos y para solucionar esto se creo un ambiente virtual en python el cual encapsula cada proyecto y no lo deja de forma compartida.
Genial!!!!
Gracias 🥇
Para los que apenas comienzan, esto puede parecer contra intuitivo, porque es logico pensar, bueno, pero que tanto puede cambiar, de una version a otra, igual todo se programa de la misma manera, son los mismos comandos, siempre utilizo la misma manera de programar, etc... Pero si hay un gran problema, aunque no lo veamos a simple vista, pero la manera como configuramos un proyecto, puede ser muy diferente a como configuermos un segundo y asi sucesivamente, que sucede con esto, que las versiones de las librerias puedes ser diferentes, y si es cierto que no cambia la manera como programamos, si cambia la manera como estas pueden estar distribuidas en el codigo, y causas posteriores problemas. Y segundo, que apesar que sea un poco mas demorado hacer todo el proceso de crear entornos virtuales, si es mejor y mucho mas ordenado, para que sepamos exactamente como esta ubicado todo en nuestro computador, y posteriormente en Github o Gitlab.
Gracias por la aclaracion.
Gracias, Michelle. No tenía idea de la trascendencia.
Les dejo un resumen de qué son los entornos / ambientes virtuales y cuáles son los beneficios cuando lo comparamos con instalaciones de forma local 🌐vs🖥️ _
--
Los entornos virtuales son una forma de crear un sistema operativo virtual dentro de otro sistema operativo. Esto permite a un usuario tener varios sistemas operativos diferentes en un mismo equipo físico, lo que puede ser muy útil en situaciones en las que es necesario utilizar diferentes aplicaciones o tecnologías que requieren entornos diferentes
--
- Permiten utilizar varios sistemas operativos en un mismo equipo físico
- Permiten instalar y utilizar diferentes aplicaciones y tecnologías de manera segura, sin tener que hacer cambios permanentes en el sistema operativo principal
- Pueden ser fácilmente movidos o copiados, lo que significa que pueden ser utilizados en diferentes equipos o compartidos con otros usuarios
- También pueden ser fácilmente respaldados y restaurados en caso de que se produzca un problema, lo que puede ayudar a prevenir la pérdida de datos o el tiempo de inactividad
- Ofrecen una forma conveniente y segura de utilizar diferentes aplicaciones y tecnologías en un mismo equipo
-- En resumen, los entornos virtuales ofrecen una forma conveniente y segura 🔒 de utilizar diferentes aplicaciones y tecnologías en un mismo equipo, lo que puede ser muy útil para muchos usuarios y situaciones diferentes
recomiendo ver el curso de entorno de trabajo con ambientes virtuales usando conda, y así podrán conocer un poco mas la idea. https://platzi.com/cursos/jupyter-notebook/
Venv y minecraft (analogía)
Una forma en la que entendí los ambientes virtuales fue viéndolo como un Launcher de minecraft. Si viste bien minecraft.
Analogía
Imagina que quieres jugar minecraft en una versión específica porque en esa versión hay algo que quieres probar, esta versión esta aislada del resto de versiones, en un Launcher tienes todas las versiones disponibles y debes escoger una que quieras jugar…
Esto es muy parecido a un entorno virtual (venv => virtual enviroment) ya que este es un espacio aislado con sus propias dependencias, con diferentes versiones de paquetes.
Porqué tener diferentes versiones de paquetes?
Siguiendo con la analogía en minecraft diferentes versiones tienen diferentes cosas que agregan o quitan, puede que quieras conectarte a un server pero en el server solo usan la version 1.8.8 o quieres instalar mods…
Para un ambiente virtual los paquetes que se instalan tienen diferentes características, puede que quieras algo de una versión específica, o puede que tu código solo funcione en esa versión.
Las analogías no son siempre acertadas, es una relación semejante entre algo distinto, si has jugado minecraft seguramente le encuentras más sentido 😄
Si instalaste TLauncher, desinstalalo!!, ese Launcher viene con un spyware...
Muchas gracias, me fue de mucha utilidad
¿Qué es un entorno virtual en Python?
Un entorno virtual (o ambiente virtual) en el contexto de Python es una herramienta que te permite crear un espacio aislado en tu sistema donde puedes instalar paquetes y dependencias de Python sin afectar el entorno global de Python en tu máquina.
Beneficios de los entornos virtuales:
requirements.txt.Lo genial de PyCharm es que te crea por defecto cada proyecto con su propio ambiente virtual :D
En algunas condiciones eso me ha traido problemas, no se si es que no lo he sabido configurar correctamente pero me creeaba más de un entorno virtual por proyecto
Los ambientes virtuales se crean por proyecto por cada modulo que estemos haciendo?
Se crean por cada proyecto.
Para instalar una version diferente de una libreria usamos el codigo pip3 install <libreria>==<version>
Para todos los que crean que esto no es tan importante
De verdad, usen entornos virtuales en cada proyecto que hagan, su YO del futuro se los va a agradecer.
Yo usé por años Python a como diosito me daba a entender y ahora que estoy tomando estos cursos es cuando me doy cuenta de todos las malas prácticas que tenía y esto en particular les va a ahorrar muchos problemas después
Si alguno estava usando git bash, para activar el entorno virtual desde windows:
### Pasos para realizar un ambiente virtual
1. Primer punto, verificar dónde se está ejecutando python mediante el comando which python3. Verificar también which pip3
2. Si te encuentras en linux o wsl, realizar el siguiente comando en la terminal:
sudo apt install \[-y] python3-venv
Esto instalará la opción para realizar entornos virtuales
3. Luego, en cada carpeta, en cada proyecto, podemos crear el entorno virtual mediante el siguiente comando:
python3 -m venv \[nombre del entorno virtual]
El nombre puede ser el que quieras. Normalmente se lo coloca *env*.
4. Una vez ejecutado el comando nos aparecerá una carpeta el nuestro proyecto con el nombre elegido. Ahora debemos activarlo:
source \[nombre del entorno virtual]/bin/activate
5. En alguna parte de la terminal nos saldrá un indicativo de que nos encontramos en el entorno virtual ingresado
6. Podemos verificar dónde se está ejecutando python y pip3. Nos saldrá que se ejecuta desde nuestros ambientes virtuales
7. Podemos instalar los módulos que necesitamos para nuestro proyecto. *Observación: las librerías instaladas globalmente no aparecerán disponibles*
pip3 install \[modulo o modulo==x.x.x]
8. Para verificar los módulos instalados
pip3 list o pip3 freeze
9. Para salir del entorno virtual
deactivate
como crear un ambiente virtual
python3 -m venv nombre_del_ambiente
nombre_del_ambiente\Scripts\activate.bat
source nombre_del_ambiente/bin/activate
La realidad es que todo el manejo de dependencias se puede salir de las manos si no se usa un ambiente virtual.
Inclusive yo recomendaría usar la versión de python más actual en cada proyecto, porque la realidad es que cuando python o la versión en cuestión que se usa para desarrollar queda sin soporte, toca hacer revisión y refactoring del código.
Why Use Virtual Environments?
✅ Avoid dependency conflicts between projects.
✅ Reproduce environments easily (with requirements.txt).
✅ Keep your global Python installation clean.
✅ Work with different Python versions and package versions simultaneously.
What is a Virtual Environment?
👉 Without a virtual environment, all packages are installed system-wide, which can quickly lead to version conflicts.
Hola, cuando hago
pip freeze
Me aparecen una librerías y cuando hago
pip3 freeze
aparecen otras, ¿a que se debe y a cuál debo de hacer caso?. Estoy en Mac
Hola eso se debe a que pip hace referencia a los paquetes instalados de python2 y pip3 a los de python3, en caso que no tener python2 pip hace referencia a los paquetes del python3. En mi caso uso linux y mi ubuntu tenía por defecto instalado python2 y python3 por tanto hay diferencia entre pip y pip3, en tu caso debe ocurrir algo parecido.
Profe. Qué diferencia habría entre crear mi ambiente virtual con Conda a si lo hago con pip?
Ambos pip y conda son herramientas populares para crear y administrar ambientes virtuales en Python, la diferencias pueden ser las siguientes:
pip es el gestor de paquetes estándar para Python, y se utiliza principalmente para instalar paquetes de Python
conda, por otro lado, es un gestor de paquetes más general que puede instalar paquetes de Python y también paquetes de otros lenguajes como R y C ++, está diseñado para funcionar en diferentes sistemas operativos y arquitecturas, lo que significa que puede instalar y administrar paquetes que son específicos de una plataforma determinada. Por el contrario, pip es específico de Python y puede tener problemas para instalar algunos paquetes que dependen de bibliotecas del sistema operativo.
Entornos virtuales: conda puede crear entornos virtuales completos que incluyen una instalación de Python y todas las bibliotecas necesarias para una aplicación. pip, por otro lado, solo puede instalar bibliotecas de Python y no puede configurar un entorno virtual completo.
En resumen, si se trabaja en un proyecto de Python, pip es la herramienta recomendada para administrar las bibliotecas de Python. Sin embargo, si se trabaja con paquetes que no son de Python o se necesita configurar entornos virtuales completos, conda es una opción. En cualquier caso, ambas herramientas son útiles y se pueden usar juntas para obtener lo mejor de ambas.
¿Si quiesiera manejar diferentes paquetes y ademas versiones de Python como se podría hacer? ¿Necesitaría exclusivamente Docker? ¿O se puede con entornos virtuales?
Gracias!
Y como se quitan todos los modulos de toda la maquina?
No sería correcto eliminar todos los modulos ya que algunos de ellos son esenciales para el correcto funcionamiento del intérprete de Python y de otros programas que dependen de ellos. Además, eliminar módulos de Python podría afectar a la estabilidad del sistema.
Puedes utilizar el siguiente para eliminar algun paquete
pip uninstall nombre-del-paquete