{"id":723,"date":"2019-12-03T20:24:44","date_gmt":"2019-12-03T19:24:44","guid":{"rendered":"https:\/\/www.tiraquelibras.com\/blog\/?p=723"},"modified":"2019-12-26T17:00:16","modified_gmt":"2019-12-26T16:00:16","slug":"entornos-virtuales-en-python-3","status":"publish","type":"post","link":"https:\/\/blog.tiraquelibras.com\/?p=723","title":{"rendered":"Entornos virtuales en Python 3"},"content":{"rendered":"<p>Desarrollar en un entorno aislado que no interfiera con el resto de desarrollos ni con el <strong>host<\/strong> principal es una pr\u00e1ctica muy recomendable, incluso me arriesgar\u00eda a decir que obligatoria, para todo desarrollador de software. No solo nos permite trabajar en entornos aislados en donde tengamos diferentes m\u00f3dulos instalados, tambi\u00e9n nos permite utilizar diferentes versiones de un mismo m\u00f3dulo sin que con ellos se produzca fallo alguno.<\/p>\n<p>Para este fin <strong>Python<\/strong> dispone de varios sistemas para <strong><em>virtualizar<\/em> <\/strong>las \u00e1reas de trabajo, y en esta entrada del blog veremos como instalar y crear este entorno con\u00a0<em><strong>virtualenv<\/strong><\/em><em>.<\/em><\/p>\n<hr \/>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_76 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de contenidos<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69fc925beef7c\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69fc925beef7c\"  aria-label=\"Alternar\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=723\/#Instalacion_Python_pip_y_virtualenv\"  rel=\"nofollow\" target=\"_blank\">Instalaci\u00f3n Python pip y virtualenv<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=723\/#Centos_7\"  rel=\"nofollow\" target=\"_blank\">Centos 7<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=723\/#Debian\"  rel=\"nofollow\" target=\"_blank\">Debian<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-4 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=723\/#Crear_un_entorno_virtual\"  rel=\"nofollow\" target=\"_blank\">Crear un entorno virtual<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-5 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=723\/#Activar_el_entorno_virtual_creado\"  rel=\"nofollow\" target=\"_blank\">Activar el entorno virtual creado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-6 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=723\/#Desactivar_el_entorno_virtual\"  rel=\"nofollow\" target=\"_blank\">Desactivar el entorno virtual<\/a><\/li><\/ul><\/nav><\/div>\n<h1 id=\"instalaci\u00f3n-python-pip-y-vitualenv\"><span class=\"ez-toc-section\" id=\"Instalacion_Python_pip_y_virtualenv\"><\/span><span id=\"Instalacion_Python_pip_y_vitualenv\" class=\"ez-toc-section\" tabindex=\"-1\">Instalaci\u00f3n Python pip y virtualenv<\/span><span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Lo primero que haremos es instalar\u00a0<em><strong>pip<\/strong><\/em>\u00a0y a continuaci\u00f3n el m\u00f3dulo de\u00a0<strong>entornos virtuales<\/strong>\u00a0para\u00a0<strong>Python 3<\/strong>.<\/p>\n<h2 id=\"centos-7\"><span class=\"ez-toc-section\" id=\"Centos_7\"><\/span><span id=\"Centos_7\" class=\"ez-toc-section\">Centos 7<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"EnlighterJSWrapper twilightEnlighterJSWrapper\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\"># Instalamos el repositorio EPEL\r\nsudo yum install epel-release\r\n# Instalamos Python 34 y el gestor de paquetes python-pip\r\nsudo yum install python34 python-pip\r\n# Actualizamos pip e instalamos los entornos virtuales\r\npip install -U pip\r\npip install -U virtualenv<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Debian\"><\/span><span style=\"color: #000000; font-family: Poppins, sans-serif; font-size: 1.75rem;\">Debian<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<\/div>\n<div class=\"EnlighterJSWrapper twilightEnlighterJSWrapper\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\"># Actualizamos los repositorios\r\nsudo apt-get update\r\n# Instalamos pip para Python 3\r\nsudo apt-get install build-essential libssl-dev libffi-dev python-dev\r\nsudo apt-get install python3-pip\r\n# Ahora los entornos virtuales\r\nsudo pip3 install virtualenv<\/pre>\n<hr \/>\n<\/div>\n<h1 id=\"crear-y-activar-entorno-virtual\"><span class=\"ez-toc-section\" id=\"Crear_un_entorno_virtual\"><\/span><span id=\"Crear_y_activar_entorno_virtual\" class=\"ez-toc-section\">Crear un entorno virtual<\/span><span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Nos ubicamos en el directorio en donde se ejecutar\u00e1 nuestra herramienta. Yo suelo trabajar en el directorio\u00a0<em><strong>\/usr\/local\/scripts<\/strong><\/em>, pero la decisi\u00f3n final la dejo a tu gusto teniendo en cuenta que hay que indicar este en el comando de sistema que crearemos m\u00e1s adelante.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">mkdir -p \/usr\/local\/scripts\/prueba &amp;&amp; cd \/usr\/local\/scripts\/prueba<\/pre>\n<p>Creamos el entorno virtual sobre el que se ejecutar\u00e1 nuestra herramienta, el cual lamaremos <em><strong>venv_project<\/strong><\/em>, pero lo puedes llamar como quieras.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">python3 -m virtualenv venv_project<\/pre>\n<p>&nbsp;<\/p>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Activar_el_entorno_virtual_creado\"><\/span>Activar el entorno virtual creado<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Activamos el entorno virtual.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">source venv_project\/bin\/activate<\/pre>\n<p>El <em><strong>prompt<\/strong><\/em> cambia indicando que nos encontramos en el entorno virtual, y por tanto todo m\u00f3dulo de Python que instalemos solo se aplicar\u00e1 a este entorno creado.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">(venv_project) sergio@sergio-VirtualBox:\/usr\/local\/scripts\/prueba$<\/pre>\n<p>Ya podremos instalar cualquier m\u00f3dulo de <strong>Python<\/strong> que solo afectar\u00e1 al entorno virtual en que nos encontramos, una vez est\u00e9 activado. Si este se encuentra desactivado los m\u00f3dulos que se podr\u00e1n utilizar son los que tenemos instalados en el <strong>host<\/strong> en el que nos encontremos.<\/p>\n<hr \/>\n<h1><span class=\"ez-toc-section\" id=\"Desactivar_el_entorno_virtual\"><\/span>Desactivar el entorno virtual<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Para desactivar el entorno virtual basta con salir de la sesi\u00f3n del\u00a0<strong>host<\/strong> en el que nos encontremos, o escribir la siguiente orden en el entorno virtual:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">(venv_project) sergio@sergio-VirtualBox:\/usr\/local\/scripts\/prueba$ deactivate<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Desarrollar en un entorno aislado que no interfiera con el resto de desarrollos ni con el host principal es una pr\u00e1ctica muy recomendable, incluso me<span class=\"read-more-link\"><a class=\"read-more\" href=\"https:\/\/blog.tiraquelibras.com\/?p=723\">Read More<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":724,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,22],"tags":[],"class_list":["post-723","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","category-ti"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=723"}],"version-history":[{"count":0,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/723\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/media\/724"}],"wp:attachment":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}