{"id":692,"date":"2026-01-24T18:01:04","date_gmt":"2026-01-24T18:01:04","guid":{"rendered":"https:\/\/blogs.ua.es\/jpm33\/?p=692"},"modified":"2026-01-24T18:02:58","modified_gmt":"2026-01-24T18:02:58","slug":"crear-proyecto-python-desde-cero-venv","status":"publish","type":"post","link":"https:\/\/blogs.ua.es\/jpm33\/2026\/01\/24\/crear-proyecto-python-desde-cero-venv\/","title":{"rendered":"Crear proyecto python desde cero (venv)"},"content":{"rendered":"\n<p>\u00bfAlguna vez te has preguntado c\u00f3mo empiezan los proyectos de python? \u00bfCreo una carpeta? \u00bfUso cualquier IDE? \u00bfUso pip install y ya &#8230;?<\/p>\n\n\n\n<p>No todo es siempre un IDE, a veces, la base de todo est\u00e1 en la consola. En python existe el concepto de &#8220;entorno virtual&#8221; esto es que para un proyecto dado guarda las bibliotecas o paquetes necesarios para este proyecto. La idea es similar a quien conozca <code>npm<\/code> de Node.js.<\/p>\n\n\n\n<p>La cosa es que en python con <code>pip<\/code> podemos instalar paquete usando:<\/p>\n\n\n\n<pre style=\"color: Blue;background: AliceBlue;border-left: 5px solid DarkBlue\">\n<code>pip <span style=\"color:DarkRed\">install<\/span> <span style=\"color: DarkGreen\">&lt;nombre_paquete&gt;<\/span><\/code>\n<\/pre>\n\n\n\n<p>Pero por defecto python lo instala de forma global para el interprete de python (en la carpeta lib donde tengas instalado python). Entonces: \u00bfQu\u00e9 pasa si en un proyecto necesito Pandas 2.3 y en otro 1.4 y en el interprete global tengo instalado Pandas 2.2. Pues por defecto se usar\u00e1 la versi\u00f3n 2.2, para evitar estos problemas, existe <strong>venv<\/strong>.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">venv<\/h2>\n\n\n\n<p><code>venv<\/code> nos permite crear un proyecto python dentro de un &#8220;entorno virutal&#8221; (similar a la idea del chroot de unix). Lo que hace es crear un entorno de desarrollo\/ejecuci\u00f3n que est\u00e1 relativo a nuestra carpeta de trabajo y no usa ni guarda nada en la carpeta global de python: Instala el interprete y todas las dependencias que usemos en una subcarpeta de nuestro proyecto.<\/p>\n\n\n\n<p>De este modo nuestro proyecto siempre ser\u00e1 independiente de la instalaci\u00f3n global de python. Todo gracias a la idea del <code>virtualenv<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 1: Prepara el Terreno (Instala virtualenv)<\/h3>\n\n\n\n<p>Primero, aseg\u00farate de tener Python instalado en tu sistema. Si no lo tienes, descargalo desde: <a href=\"https:\/\/www.python.org\/downloads\/\">https:\/\/www.python.org\/downloads\/<\/a><\/p>\n\n\n<pre style=\"color: blue;background: AliceBlue;border-left: 5px solid DarkBlue\"><code>python <span style=\"color: darkred\">-v<\/span><span style=\"color: darkgreen\"><br \/><\/span>sudo apt <span style=\"color: darkred\">install -y<\/span> <span style=\"color: darkgreen\">python3 python3-pip<\/span>\n<\/code><\/pre>\n<p><code><\/code><\/p>\n\n\n<p>Una vez que tengas Python, abre tu terminal o l\u00ednea de comandos. Vamos a instalar virtualenv (si no lo tienes ya):<\/p>\n\n\n<pre style=\"color: blue;background: AliceBlue;border-left: 5px solid DarkBlue\"><code>pip <span style=\"color: darkred\">install <\/span><span style=\"color: darkgreen\">virtualenv<\/span>\n<\/code><\/pre>\n<p><code><\/code><\/p>\n\n\n<h3 class=\"wp-block-heading\">Paso 2: Crea tu Carpeta de Proyecto<\/h3>\n\n\n\n<p>Ahora toca crear una carpeta para nuestro nuevo proyecto. Puede llamarse como quieras. En este ejemplo, la llamaremos <code>mi_primer_proyecto<\/code>.<\/p>\n\n\n<pre style=\"color: blue;background: AliceBlue;border-left: 5px solid DarkBlue\"><code><span style=\"color: #0000ff\"><span style=\"color: #8b0000\"><span style=\"color: #0000ff\">mkdir <\/span>mi_primer_proyecto<\/span><br \/>cd <\/span><span style=\"color: #8b0000\">mi_primer_proyecto<\/span>\n<\/code><\/pre>\n<p><code><\/code><\/p>\n\n\n<h2 class=\"wp-block-heading\">Paso 3: Crear el Entorno Virtual<\/h2>\n\n\n\n<p>Una vez que estamos dentro de la carpeta del proyecto podemos crear nuestro entorno virtual. Dentro de la carpeta <code>mi_primer_proyecto<\/code>, vamos a crear nuestro entorno virtual. Puedes llamarlo <strong>venv<\/strong> (es una convenci\u00f3n com\u00fan).<\/p>\n\n\n<pre style=\"color: blue;background: AliceBlue;border-left: 5px solid DarkBlue\"><code><span style=\"color: #0000ff\"><span style=\"color: #8b0000\"><span style=\"color: #0000ff\">virtualenv <\/span>.venv<\/span><\/span>\n<\/code><\/pre>\n<p><code><\/code><\/p>\n\n\n<p>Ver\u00e1s que se crea una carpeta llamada <code>.venv<\/code> dentro de tu proyecto. Ese el &#8220;entorno virtual&#8221; donde tenemos un interprete de python y las librer\u00edas de python del proyecto para que no colisionen con las del sistema. En concreto tiene esta forma (en Windows):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MI_PROYECTO_NUEVO\n|   \n\\---.venv\n    |   .gitignore\n    |   CACHEDIR.TAG\n    |   pyvenv.cfg\n    |   \n    +---Lib\n    |   \\---site-packages\n    |       |   pip-25.3.virtualenv\n    |       |   _virtualenv.pth\n    |       |   _virtualenv.py\n    |       |   \n    |       +---pip\n    ...\n    |                                   \n    \\---Scripts\n            activate\n            activate.bat\n            activate.fish\n            activate.nu\n            activate.ps1\n            activate_this.py\n            deactivate.bat\n            pip-3.14.exe\n            pip.exe\n            pip3.14.exe\n            pip3.exe\n            pydoc.bat\n            python.exe\n            python3\n            python3.exe\n            pythonw.exe\n            venvlauncher.exe\n            <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 4: Activa tu Entorno Virtual<\/h3>\n\n\n\n<p>Para empezar a usar tu entorno virtual, tienes que &#8220;activarlo&#8221;. Los comandos var\u00edan un poco seg\u00fan tu sistema operativo:<\/p>\n\n\n<pre style=\"color: blue;background: AliceBlue;border-left: 5px solid DarkBlue\"><code><span style=\"color: #0000ff\"><span style=\"color: #8b0000\"><span style=\"color: #0000ff\"><span style=\"color: #000000\">En Windows:<\/span><br \/>.\\.venv\\Scripts\\activate.bat<\/span><br \/><br \/><\/span><\/span><span style=\"color: #000000\">En Linux:<\/span><span style=\"color: #0000ff\"><span style=\"color: #8b0000\"><br \/><span style=\"color: #0000ff\">source<\/span> .venv\/bin\/activate<\/span><\/span>\n<\/code><\/pre>\n<p><span style=\"color: #333333\"><em>** En Linux es importante usar &#8220;source&#8221; porque no queremos ejecutar un script queremos ejecutar unos comandos que afecten al shell actual<\/em><\/span><\/p>\n<p><code><\/code><\/p>\n\n\n<p>Una vez activado, al principio del prompt del shell veremos <code>(venv)<\/code>, esto indica que estamos dentro de un entorno virtual. Cualquier librer\u00eda que instalemos ahora se quedar\u00e1 dentro de esta &#8220;burbuja&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Paso 5: Programar<\/h2>\n\n\n\n<p>Ahora que tenemos nuestro entorno listo por fin estamos en condiciones de empezar a programar e instalar tantas dependencias como necesitemos. Vamos a crear un peque\u00f1o script de Python. Crea un archivo llamado <code>main.py<\/code> (o como quieras) dentro de tu carpeta <code>mi_primer_proyecto<\/code>. Puedes usar un editor de texto simple para esto, o el que prefieras..<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/usr\/bin\/env python\n\ndef saludar(nombre):\n    print(f\"\u00a1Hola, {nombre}! Este es tu primer proyecto en Python.\")\n\nif __name__ == '__main__':\n    saludar(\"Programador\")<\/code><\/pre>\n\n\n\n<p>Podemos ejecutarlo as\u00ed:<\/p>\n\n\n<pre style=\"color: blue;background: AliceBlue;border-left: 5px solid DarkBlue\"><code><span style=\"color: #0000ff\"><span style=\"color: #8b0000\"><span style=\"color: #0000ff\">python <\/span>main.py<\/span><\/span>\n<\/code><\/pre>\n<p><code><\/code><\/p>\n\n\n<p>Deber\u00edas ver el saludo en tu consola.<\/p>\n\n\n\n<p>Por cierto, ahora mismo podemos abrir el proyecto en un IDE como pycharm y empezar a usarlo (por ejemplo) y nos reconoce todo el trabajo, en la siguiente imagen se puede ver:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blogs.ua.es\/jpm33\/files\/2026\/01\/pycharm.venv_1.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1204\" height=\"367\" src=\"https:\/\/blogs.ua.es\/jpm33\/files\/2026\/01\/pycharm.venv_1.jpg\" alt=\"\" class=\"wp-image-761\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Extra: Guardar y recuperar las dependencias (paquetes pip)<\/h3>\n\n\n\n<p>Como un un entorno virtual tiene sus propios paquetes en la carpeta <code>.venv<\/code> es importante al compartir c\u00f3digo tener un catalogo de los paquetes usados para que nuevos usuarios\/desarrolladores utilicen las mismas versiones. Para ello podemos hacer:<\/p>\n\n\n\n<pre style=\"color: Blue;background: AliceBlue;border-left: 5px solid DarkBlue\">\n<code>\npip3 <span style=\"color: DarkRed\">freeze -l<\/span> &gt; <span style=\"color: DarkGreen\">requirements.txt<\/span>\n<\/code>\n<\/pre>\n\n\n\n<p>Genera un fichero as\u00ed:<\/p>\n\n\n\n<pre style=\"background: LemonChiffon\">\ncertifi==2025.8.3\ncharset-normalizer==3.4.3\ncolorama==0.4.6\ncolorlog==6.9.0\ndocopt==0.6.2\nidna==3.10\npipreqs==0.4.13\nPyYAML==6.0.2\nrequests==2.32.5\nurllib3==2.5.0\nxlwt==1.3.0\nyarg==0.1.10\n<\/pre>\n\n\n\n<p>Y para instalar estos paquetes una vez se ha copiado alguien el proyecto o clonado desde git, hacemos:<\/p>\n\n\n\n<pre style=\"color: Blue;background: AliceBlue;border-left: 5px solid DarkBlue\">\n<code>pip3 <span style=\"color: DarkRed\">install -r<\/span> <span style=\"color: DarkGreen\">requirements.txt<\/span> <span style=\"color: DarkRed\">-v<\/span>\n<\/code><\/pre>\n\n\n\n<p>\u00a1Espero que haya sido de ayuda! \u00a1Adi\u00f3s!<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfAlguna vez te has preguntado c\u00f3mo empiezan los proyectos de python? \u00bfCreo una carpeta? \u00bfUso cualquier IDE? \u00bfUso pip install y ya &#8230;? No todo es siempre un IDE, a veces, la base de todo est\u00e1 en la consola. En &hellip; <a href=\"https:\/\/blogs.ua.es\/jpm33\/2026\/01\/24\/crear-proyecto-python-desde-cero-venv\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3080,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[135,236760,10656],"tags":[236718,236761],"class_list":["post-692","post","type-post","status-publish","format-standard","hentry","category-linux","category-python","category-windows-2","tag-programacion-2","tag-python"],"_links":{"self":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts\/692","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/users\/3080"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/comments?post=692"}],"version-history":[{"count":18,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts\/692\/revisions"}],"predecessor-version":[{"id":765,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/posts\/692\/revisions\/765"}],"wp:attachment":[{"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/media?parent=692"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/categories?post=692"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ua.es\/jpm33\/wp-json\/wp\/v2\/tags?post=692"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}