NOTAS DE UN INFORMÁTICO 1: ENTORNO VIRTUAL, PIPENV
ENTORNO VIRTUAL
Un entorno virtual en python es un espacio de trabajo que permite el desarrollo de aplicaciones con un control de versiones de paquetes y módulos que no forman parte de las librerías estándar, son independientes del sistema, se crean en directorios aislados y no requieren permisos del administrador. Para la creación de un entorno virtual usaremos la herramienta PIPENV.
Para iniciar con el proceso de instalación, abrimos la terminal o CMD en el directorio donde queremos crear en entorno virtual.
Instalación de PIPENV:
Si tenemos las versiones 2 y 3 de python instalada, debemos especificar la versión con la que queremos trabajar, "pip" para python 2 y "pip3" para python.
Para conocer la versión de python:
python --version
ó
python3 --version
En mi caso, sólo tengo la versión 3, ejecuto lo siguiente:
pip install pipenv
Para iniciar un nuevo proyecto usaremos el comando:
pipenv shell
Esto creará un archivo llamado pipfile que contendrá la información de nuestro proyecto:
$ cat pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
[requires]
python_version = "3.8"
Ahora para instalar un paquete, como ejemplo usaremos la blibioteca que nos premite interactuar con la API de discord, discord.py, y lo haremos con el siguiente comando:
pipenv install discord.py
Se actualizará el archivo pipfile indicándonos que ya está instalada la la biblioteca y contendrá lo siguiente:
$ cat pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
"discord.py" = "*"
[requires]
python_version = "3.8"
Si queremos desinstalar un paquete:
pipenv uninstall nombre_paquete
Si lo que deseamos es instalar un paquete que sólo usaremos en desarrollo:
pip install "paquete" --dev
Para conocer los módulos o dependencias instaladas en nuestro proyecto:
pipenv lock -r
Cuando instalamos una biblioteca, por lo general se instala un árbol de dependencias, la forma de ver estos es con el siguiente comando:
pipenv graph
El siguiente ejemplo es el árbol de dependencia de la biblioteca discord.py
$ pipenv graph
discord.py==1.5.1
- aiohttp [required: >=3.6.0,<3.7.0, installed: 3.6.3]
- async-timeout [required: >=3.0,<4.0, installed: 3.0.1]
- attrs [required: >=17.3.0, installed: 20.2.0]
- chardet [required: >=2.0,<4.0, installed: 3.0.4]
- multidict [required: >=4.5,<5.0, installed: 4.7.6]
- yarl [required: >=1.0,<1.6.0, installed: 1.5.1]
- idna [required: >=2.0, installed: 2.10]
- multidict [required: >=4.0, installed: 4.7.6]
Es importante revisar si los paquetes que estamos usando en el desarrollo tienen vulnerabilidades, en el caso de tenerla, deberíamos actualizar la versión, con el siguiente comando podemos obtener esta información y sugerencias de versiones donde ya estén solucionadas:
pipenv check
Cuando queremos desplegar nuestra aplicación en un servidor debemos ejecutar el siguiente comando antes de desplegar para actualizar el archivo pipfile.lock:
pipenv lock
Una vez hecho esto, ejecutamos el siguiente comando que instalará los paquetes con las versiones correctas y no existan problemas en nuestro entorno de producción:
pipenv install --ignore-pipfile
Para eliminar el entorno virtual:
pipenv --rm
Si bajamos un proyecto de un sitio como Github, para instalar los módulos necesarios para su funcionamiento, lo hacemos con el siguiente comando:
pipenv install
Instalar paquetes desde requirements
pipenv install -r requirements.txt
Con estos comandos podemos trabajar en el desarrollo de una aplicación en un entorno virtual, que si en algún momento deseamos migrar todo el trabajo a otro sitio, el proceso será muy sencillo, al igual que para el despliegue de producción. Si desea conocer más, en el siguiente enlace puede obtener toda la documentación oficial. También les dejo del siguiente enlace de video donde se explica todos los pasos anteriores.
Iniciaré una lista de publicaciones relacionadas al ambiente de programación y solución de problemas informáticos, llamadas "NOTAS DE UN INFORMÁTICO". Espero que les haya sido de mucha utilidad esta publicación, los invito a compartirla, si tiene alguna sugerencia, cuéntenos en los comentarios.
La imagen fue creada con Canva usando un fondo de Pixabay.
Discord alberto0607#6813
Sígueme en Twitter
Congratulations @alberto0607! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s) :
You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOP
Do not miss the last post from @hivebuzz:
https://twitter.com/alberto_0607/status/1322194868521848834
https://twitter.com/alberto_0607/status/1322195428398534656
https://twitter.com/alberto_0607/status/1322195572900696064