{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "# El entorno de Python\n", "\n", "## Qué es python?\n", "\n", "**Python** es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible, fue creado por Guido van Rossum en 1991.\n", "\n", "En este segundo bloque de trabajo el lenguaje de programación que vamos a usar es **Python**, que es un lenguaje diseñado para que las aplicaciones que se escriban con él sean completamente independientes de la plataforma en la que se ejecutan. Esto significa que un programa escrito en este lenguaje se ejecutará sin ningún tipo de modificación en cualquier sistema informático, al menos en cualquier sistema que soporte **Python**." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The Zen of Python, by Tim Peters\n", "\n", "Beautiful is better than ugly.\n", "Explicit is better than implicit.\n", "Simple is better than complex.\n", "Complex is better than complicated.\n", "Flat is better than nested.\n", "Sparse is better than dense.\n", "Readability counts.\n", "Special cases aren't special enough to break the rules.\n", "Although practicality beats purity.\n", "Errors should never pass silently.\n", "Unless explicitly silenced.\n", "In the face of ambiguity, refuse the temptation to guess.\n", "There should be one-- and preferably only one --obvious way to do it.\n", "Although that way may not be obvious at first unless you're Dutch.\n", "Now is better than never.\n", "Although never is often better than *right* now.\n", "If the implementation is hard to explain, it's a bad idea.\n", "If the implementation is easy to explain, it may be a good idea.\n", "Namespaces are one honking great idea -- let's do more of those!\n" ] } ], "source": [ "import this" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "## Instalación de Python\n", "\n", "Instalar **Python** es muy sencillo, pero dependiendo del Sistema Operativo que tengamos deberemos realizar distintos pasos. Además, es posible que nuestro ordenador ya tenga una instalación del lenguaje.\n", "\n", "### Windows\n", "Para verificar si ya tenemos **Python** instalado, primero abriremos una terminal, por ejemplo, la aplicación _PowerShell_, la terminal de windows (línea de comandos) o _cmd.exe_. A continuación escribiremos:\n", "\n", "```\n", "python --version\n", "```\n", "\n", "Si esta consulta nos devuelve un texto similar a `Python 3.X.X` quiere decir que tenemos Python instalado y nos está indicando la versión. Para este curso toda versión superior o igual a la versión 3.7 será adecuada. Si no nos devuelve este mensaje entonces debemos acudir a la [web oficial de Python](https://www.python.org/downloads/) descargarlo e instalarlo.\n", "\n", "### MacOs\n", "\n", "Para verificar si ya tenemos **Python** instalado, primero abriremos una terminal y teclear el siguiente comando:\n", "\n", "```\n", "$ python3 --version\n", "```\n", "Si tenemos **Python** instalado en nuestro sistema, este comando debería responder con un número de versión. Por ejemplo, si **Python** 3.6.10 ya estuviera configurado en su computadora, el comando `python3` mostraría ese número de versión. Si este comando no ha devuelto nada, entonces debemos acudir a la [web oficial de Python](https://www.python.org/downloads/) descargarlo e instalarlo.\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "## Entornos Virtuales en Python: Virtualenv, venv, uv y Conda\n", "\n", "La creación de **entornos virtuales** es una práctica esencial en Python, ya que permite aislar las dependencias de cada proyecto, evitando conflictos entre versiones de paquetes o bibliotecas.\n", "\n", "A continuación se presentan las principales herramientas para crear entornos virtuales en Python: **Virtualenv**, **venv**, **uv** y **Conda**.\n", "\n", "---\n", "\n", "### Virtualenv\n", "\n", "[`virtualenv`](https://virtualenv.pypa.io/en/stable/) es una herramienta para crear entornos **Python** aislados. Su objetivo es permitirte tener configuraciones de paquetes independientes para cada proyecto.\n", "\n", "#### Instalación\n", "\n", "Aunque en versiones recientes de Python se recomienda el uso de `venv`, aún puedes instalar `virtualenv` con **pip**:\n", "\n", "```bash\n", "pip install virtualenv\n", "```\n", "\n", "El ejecutable `virtualenv` (o `virtualenv.exe` en Windows) se encontrará en el subdirectorio `Scripts` del directorio de instalación de Python.\n", "\n", "#### Crear un entorno virtual\n", "\n", "Para crear un nuevo entorno:\n", "\n", "```bash\n", "cd path\\a\\mi\\proyecto\n", "virtualenv --python C:\\Path\\a\\Python\\python.exe venv\n", "```\n", "\n", "Notas:\n", "- Si Python está en el **PATH**, puedes simplificar a:\n", " ```bash\n", " virtualenv venv\n", " ```\n", "- Puedes reemplazar `venv` por el nombre que desees para tu entorno.\n", "\n", "#### Activar el entorno\n", "\n", "**Windows:**\n", "```bash\n", ".\\venv\\Scripts\\activate\n", "```\n", "\n", "**macOS / Linux:**\n", "```bash\n", "source venv/bin/activate\n", "```\n", "\n", "Al activarse, el prompt mostrará el nombre del entorno al inicio de la línea de comandos.\n", "\n", "#### Desactivar el entorno\n", "\n", "```bash\n", "deactivate\n", "```\n", "\n", "---\n", "\n", "### venv (módulo incorporado de Python)\n", "\n", "Desde Python 3.3, el módulo [`venv`](https://docs.python.org/3/library/venv.html) viene **incluido por defecto** y cumple una función similar a `virtualenv`, por lo que suele preferirse para proyectos modernos.\n", "\n", "#### Crear un entorno virtual con venv\n", "\n", "```bash\n", "python -m venv venv\n", "```\n", "\n", "#### Activar / Desactivar\n", "\n", "La activación y desactivación son iguales a las de `virtualenv`:\n", "\n", "- Activar (Windows):\n", " ```bash\n", " .\\venv\\Scripts\\activate\n", " ```\n", "- Activar (macOS / Linux):\n", " ```bash\n", " source venv/bin/activate\n", " ```\n", "- Desactivar:\n", " ```bash\n", " deactivate\n", " ```\n", "\n", "---\n", "\n", "### uv (nuevo gestor ultrarrápido de entornos)\n", "\n", "[`uv`](https://github.com/astral-sh/uv) es una herramienta moderna desarrollada por Astral (los creadores de `ruff` y `rye`). Es **extremadamente rápida** y compatible con entornos de Python y gestión de dependencias.\n", "\n", "#### Instalación\n", "\n", "Puedes instalar `uv` fácilmente con `pip` o con el script oficial:\n", "\n", "```bash\n", "pip install uv\n", "```\n", "o\n", "```bash\n", "curl -LsSf https://astral.sh/uv/install.sh | sh\n", "```\n", "\n", "#### Crear y activar un entorno virtual\n", "\n", "```bash\n", "uv venv\n", "source .venv/bin/activate\n", "```\n", "\n", "Por defecto, `uv` crea el entorno en `.venv/`. También puedes crear y activar en un solo paso:\n", "\n", "```bash\n", "uv python install\n", "```\n", "\n", "#### Ventajas de `uv`\n", "- Mucho más rápido que `pip` y `venv`.\n", "- Compatible con `requirements.txt` y `pyproject.toml`.\n", "- Entornos reproducibles y caché inteligente.\n", "- Excelente integración con herramientas modernas como `Rye` y `Poetry`.\n", "\n", "---\n", "\n", "### Conda (Anaconda / Miniconda / Mamba)\n", "\n", "[`conda`](https://docs.conda.io/en/latest/) es un **gestor de entornos y paquetes multiplataforma**, utilizado tanto para Python como para otros lenguajes (R, C, etc.). Es ideal para entornos científicos y de datos.\n", "\n", "#### Instalación\n", "\n", "Puedes instalar Conda desde:\n", "- [Anaconda](https://www.anaconda.com/)\n", "- [Miniconda](https://docs.conda.io/en/latest/miniconda.html)\n", "- [Mambaforge (versión rápida con mamba)](https://mamba.readthedocs.io/en/latest/)\n", "\n", "#### Crear un entorno\n", "\n", "```bash\n", "conda create -n mi_entorno python=3.12\n", "```\n", "\n", "#### Activar / Desactivar\n", "\n", "```bash\n", "conda activate mi_entorno\n", "conda deactivate\n", "```\n", "\n", "#### Ventajas de Conda\n", "- Gestiona dependencias no solo de Python (también librerías C/C++, R, etc.).\n", "- Ideal para entornos de ciencia de datos y machine learning.\n", "- Permite clonar entornos fácilmente:\n", " ```bash\n", " conda create --name nuevo_entorno --clone mi_entorno\n", " ```\n", "\n", "### Conclusión\n", "\n", "- Usa **`venv`** para proyectos estándar de Python.\n", "- Usa **`uv`** si buscas velocidad y reproducibilidad.\n", "- Usa **`conda`** si trabajas con ciencia de datos o múltiples lenguajes.\n", "- Usa **`virtualenv`** solo para compatibilidad con proyectos antiguos.\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "## Jupyter\n", "\n", "**Jupyter** es uno de los entornos de desarrollo que usaremos en este curso, no es el único que existe, pero si que es uno de los más usados para la programación científica y el análisis de datos. Básicamente es una aplicación que se ejecuta en un navegador y que permite crear \"cuadernos\" donde podemos mezclar texto y código.\n", "\n", "Instalaremos Jupyter en nuestro entorno virtual con el siguiente comando:\n", "\n", "```\n", "pip install notebook\n", "```\n", "\n", "Para ejecutar el programa ejecutaremos este otro comando\n", "\n", "```\n", "jupyter notebook\n", "```" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "## Recursos\n", "\n", "En la página web _Real Python_ tenéis un tutorial muy completo para instalar **Python**: [enlace](https://realpython.com/installing-python/).\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "3.9.7 (default, May 11 2022, 11:18:00) \n[Clang 13.1.6 (clang-1316.0.21.2.3)]" }, "vscode": { "interpreter": { "hash": "1dd6de46b7c7be538353ccdeaa948031a5b4d43665739a26f55ca28b247c53cc" } } }, "nbformat": 4, "nbformat_minor": 0 }