{"id":823,"date":"2020-02-12T11:37:21","date_gmt":"2020-02-12T10:37:21","guid":{"rendered":"https:\/\/www.tiraquelibras.com\/blog\/?p=823"},"modified":"2020-05-30T19:27:42","modified_gmt":"2020-05-30T17:27:42","slug":"usar-entornos-virtuales-de-python-con-pip-en-jupyter-desde-docker","status":"publish","type":"post","link":"https:\/\/blog.tiraquelibras.com\/?p=823","title":{"rendered":"Usar entornos virtuales de Python con PIP en Jupyter desde Docker"},"content":{"rendered":"<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-6a0ca364856ca\" 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-6a0ca364856ca\"  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=823\/#Introduccion\"  rel=\"nofollow\" target=\"_blank\">Introducci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Acceso_al_sistema\"  rel=\"nofollow\" target=\"_blank\">Acceso al sistema<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Acceso_desde_Docker\"  rel=\"nofollow\" target=\"_blank\">Acceso desde Docker<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Acceso_desde_la_terminal_de_Jupyter\"  rel=\"nofollow\" target=\"_blank\">Acceso desde la terminal de Jupyter<\/a><\/li><\/ul><\/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=823\/#Crear_directorio_para_el_entorno\"  rel=\"nofollow\" target=\"_blank\">Crear directorio para el entorno<\/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=823\/#Crear_y_configurar_el_entorno_virtual\"  rel=\"nofollow\" target=\"_blank\">Crear y configurar el entorno virtual<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-7 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Crear_Kernel_sobre_el_entorno_virtual\"  rel=\"nofollow\" target=\"_blank\">Crear Kernel sobre el entorno virtual<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Instalar_la_libreria_ipykernel\"  rel=\"nofollow\" target=\"_blank\">Instalar la librer\u00eda ipykernel<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Creacion_del_Kernel\"  rel=\"nofollow\" target=\"_blank\">Creaci\u00f3n del Kernel<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-10 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Usar_el_nuevo_Kernel\"  rel=\"nofollow\" target=\"_blank\">Usar el nuevo Kernel<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-11 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Comandos_de_gestion_para_Kernels\"  rel=\"nofollow\" target=\"_blank\">Comandos de gesti\u00f3n para Kernels<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Listar_Kernels\"  rel=\"nofollow\" target=\"_blank\">Listar Kernels<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Crear_Kernel\"  rel=\"nofollow\" target=\"_blank\">Crear Kernel<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Borrar_Kernel\"  rel=\"nofollow\" target=\"_blank\">Borrar Kernel<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-15 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\/#Enlaces_de_interes\"  rel=\"nofollow\" target=\"_blank\">Enlaces de inter\u00e9s<\/a><\/li><\/ul><\/nav><\/div>\n<h1 id=\"introducci\u00f3n\"><span class=\"ez-toc-section\" id=\"Introduccion\"><\/span>Introducci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Para usar entornos virtuales de&nbsp;<strong>Python<\/strong>&nbsp;(<strong>venv<\/strong>&nbsp;o&nbsp;<strong>virtualenv<\/strong>) instalados con el gestor de paquetes&nbsp;<strong>PIP<\/strong>&nbsp;en el entorno de ejecuci\u00f3n de c\u00f3digo&nbsp;<strong>Jupyter<\/strong>&nbsp;debemos de usar los pasos que se indican a continuaci\u00f3n. De esta forma tendremos las librer\u00edas cargadas independientemente entre los distintos&nbsp;<em><strong>Kernels<\/strong><\/em>&nbsp;de ejecuci\u00f3n del sistema.<\/p>\n<p>En una entrada anterior explicamos como <strong><span style=\"color: #00ffff;\"><a style=\"color: #00ffff;\" href=\"https:\/\/blog.tiraquelibras.com\/?p=814\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external external_icon\"><span style=\"color: #00ccff;\">instalar el entorno de ejecuci\u00f3n de c\u00f3digo&nbsp;Jupyter en Docker<\/span><\/a><\/span><\/strong>.<\/p>\n<hr>\n<h1 id=\"acceso-al-sistema\"><span class=\"ez-toc-section\" id=\"Acceso_al_sistema\"><\/span>Acceso al sistema<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Primero debemos de crear el entorno virtual en nuestro sistema, en donde tengamos&nbsp;<strong>Jupyter<\/strong>&nbsp;instalado. Podemos hacerlo de dos formas.<\/p>\n<h2 id=\"acceso-desde-docker\"><span class=\"ez-toc-section\" id=\"Acceso_desde_Docker\"><\/span>Acceso desde Docker<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>En nuestro caso disponemos de&nbsp;<strong>Jupyter<\/strong>&nbsp;ofrecido desde un contenedor de&nbsp;<strong>Docker<\/strong>, por lo que nos conectamos al&nbsp;<em>Sistema Operativo<\/em>&nbsp;de este a partir de su identificador.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\"># docker ps\nc0fc212515f0 jupyter\/minimal-notebook \"tini -g -- start-...\" 6 days ago Up 6 days 0.0.0.0:8888-&gt;8888\/tcp tender_hopper<\/pre>\n<p>Nos conectamos al entorno a partir del&nbsp;<em><strong>Container ID<\/strong><\/em>, c\u00e1mbialo por el tuyo:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">docker exec -it c0fc212515f0 bash<\/pre>\n<hr>\n<h2 id=\"acceso-desde-la-terminal-de-jupyter\"><span class=\"ez-toc-section\" id=\"Acceso_desde_la_terminal_de_Jupyter\"><\/span>Acceso desde la terminal de Jupyter<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tambi\u00e9n podemos acceder al&nbsp;<em>Sistema Operativo<\/em>&nbsp;acediendo desde el terminal de la interfaz Web, ya que esta muestra el&nbsp;<em><strong>Prompt<\/strong><\/em>&nbsp;del propio sistema en donde se encuentra corriendo&nbsp;<strong>Jupyter<\/strong>.<\/p>\n<p><a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img1.jpg\" class=\"external\" rel=\"nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-824 size-full\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img1.jpg\" alt=\"\" width=\"780\" height=\"313\"><\/a> <a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img2.jpg\" class=\"external\" rel=\"nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-825 size-full\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img2.jpg\" alt=\"\" width=\"291\" height=\"130\"><\/a><\/p>\n<hr>\n<h1 id=\"crear-directorio-para-el-entorno\"><span class=\"ez-toc-section\" id=\"Crear_directorio_para_el_entorno\"><\/span>Crear directorio para el entorno<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Es buena pr\u00e1ctica crear un directorio para los&nbsp;<em><strong>Notebooks<\/strong><\/em>&nbsp;que usaremos en este&nbsp;<em>entorno virtual<\/em>. Por ejemplo, vamos a crear un entorno para&nbsp;<em><strong>Redis<\/strong><\/em>, por lo que creamos el directorio:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">jovyan@c0fc212515f0:~$ pwd\n\/home\/jovyan\njovyan@c0fc212515f0:~$ ls\n'Codigo Curso Python'\njovyan@c0fc212515f0:~$ mkdir Redis\njovyan@c0fc212515f0:~$ ls\n'Codigo Curso Python' Redis<\/pre>\n<p>Y nos situamos en este:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">jovyan@c0fc212515f0:~$ cd Redis\/\njovyan@c0fc212515f0:~\/Redis$ pwd\n\/home\/jovyan\/Redis<\/pre>\n<hr>\n<h1 id=\"crear-y-configurar-el-entorno-virtual\"><span class=\"ez-toc-section\" id=\"Crear_y_configurar_el_entorno_virtual\"><\/span>Crear y configurar el entorno virtual<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Ahora creamos el&nbsp;<em>entorno virtual<\/em>. Si no disponemos del paquete necesario para crar estos entornos debemos de instalarlo:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">pip install virtualenv<\/pre>\n<p>Creamos el entorno virtual, que en nuestro caso llamaremos&nbsp;<em><strong>.redis<\/strong><\/em>, por ejemplo, indicando la versi\u00f3n de&nbsp;<strong>Python<\/strong>&nbsp;que queremos que corra en este entorno. Usamos un punto al inicio del nombre del entorno para que este sea oculto y no se muestre en el listado de archivos y&nbsp;<em><strong>Notebooks<\/strong><\/em>&nbsp;del directorio en&nbsp;<strong>Jupyter<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">python -m venv .redis<\/pre>\n<p>O con este otro comando si solo tenemos&nbsp;<strong>Python3<\/strong>&nbsp;corriendo en nuestro sistema:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">virtualenv .redis<\/pre>\n<p>Arrancamos el entorno virtual con el comando:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">jovyan@c0fc212515f0:~\/Redis$ . .redis\/bin\/activate<\/pre>\n<p>O con el comando:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">jovyan@c0fc212515f0:~\/Redis$ source .redis\/bin\/activate<\/pre>\n<p>Instalamos las librer\u00edas que precisemos, en nuestro caso instalaremos la librer\u00eda&nbsp;<strong>redis<\/strong>&nbsp;ya que esta no est\u00e1 incluida en el entorno en estos momentos:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">(.redis) jovyan@c0fc212515f0:~\/Redis$ pip list\nPackage    Version\n---------- -------\npip        20.0.2\nsetuptools 45.2.0\nwheel      0.34.2\n\n(.redis) jovyan@c0fc212515f0:~\/Redis$ pip install redis\nCollecting redis\n  Using cached redis-3.4.1-py2.py3-none-any.whl (71 kB)\nInstalling collected packages: redis\nSuccessfully installed redis-3.4.1<\/pre>\n<p>Ya la tendr\u00edamos instalada:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">(.redis) jovyan@c0fc212515f0:~\/Redis$ pip list\nPackage    Version\n---------- -------\npip        20.0.2\nredis      3.4.1\nsetuptools 45.2.0\nwheel      0.34.2<\/pre>\n<hr>\n<h1 id=\"crear-kernel-sobre-el-entorno-virtual\"><span class=\"ez-toc-section\" id=\"Crear_Kernel_sobre_el_entorno_virtual\"><\/span>Crear Kernel sobre el entorno virtual<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Ahora debemos de crear un nuevo&nbsp;<strong>Kernel<\/strong>&nbsp;que contenga al&nbsp;<em>entorno virtual<\/em>&nbsp;creado. De esta forma cualquier&nbsp;<em><strong>Notebook<\/strong><\/em>&nbsp;que creemos seleccionando este podr\u00e1 utilizar las librer\u00edas que tenga instaladas.<\/p>\n<h2 id=\"instalar-la-librer\u00eda-ipykernel\"><span class=\"ez-toc-section\" id=\"Instalar_la_libreria_ipykernel\"><\/span>Instalar la librer\u00eda ipykernel<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Primero instalamos la librer\u00eda&nbsp;<em><strong>ipykernel<\/strong><\/em>&nbsp;dentro del&nbsp;<em>entorno virtual<\/em>&nbsp;en el que nos encontremos.&nbsp;<u>Esto tendremos que realizarlo en todos los&nbsp;<em><strong>Kernels<\/strong><\/em>&nbsp;que vayamos a crear<\/u>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">pip install ipykernel<\/pre>\n<h2 id=\"creaci\u00f3n-del-kernel\"><span class=\"ez-toc-section\" id=\"Creacion_del_Kernel\"><\/span>Creaci\u00f3n del Kernel<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Creamos el nuevo&nbsp;<em><strong>Kernel<\/strong><\/em>&nbsp;con el siguiente comando, indicando el nombre que queramos. En nuestro caso lo llamaremos&nbsp;<em>Redis<\/em>. Si todo ha ido bien se indicar\u00e1 un mensaje con el resultado de la instalaci\u00f3n:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">(.redis) jovyan@c0fc212515f0:~\/Redis$ python -m ipykernel install --user --name=Redis\nInstalled kernelspec Redis in \/home\/jovyan\/.local\/share\/jupyter\/kernels\/redis<\/pre>\n<p>En el directorio creado para la instalaci\u00f3n tenemos un archivo&nbsp;<em><strong>kenel.json<\/strong><\/em>&nbsp;con los datos de configuraci\u00f3n del nuevo&nbsp;<em><strong>Kernel<\/strong><\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">(.redis) jovyan@c0fc212515f0:~\/Redis$ cat \/home\/jovyan\/.local\/share\/jupyter\/kernels\/redis\/kernel.json\n{\n \"argv\": [\n  \"\/home\/jovyan\/Redis\/.redis\/bin\/python\",\n  \"-m\",\n  \"ipykernel_launcher\",\n  \"-f\",\n  \"{connection_file}\"\n ],\n \"display_name\": \"Redis\",\n \"language\": \"python\"\n}<\/pre>\n<p>Este nuevo&nbsp;<em><strong>Kernel<\/strong><\/em>&nbsp;ya aparece en el sistema si recargamos la consola Web:<\/p>\n<p><a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img3.jpg\" class=\"external\" rel=\"nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-826 size-full\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img3.jpg\" alt=\"\" width=\"240\" height=\"252\"><\/a><\/p>\n<hr>\n<h1 id=\"usar-el-nuevo-kernel\"><span class=\"ez-toc-section\" id=\"Usar_el_nuevo_Kernel\"><\/span>Usar el nuevo Kernel<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Ahora podemos usar el nuevo&nbsp;<em><strong>Kernel<\/strong><\/em>&nbsp;con las librer\u00edas que este entorno virtual tuviera instaladas. Hagamos un ejemplo para ver esto de manera sencilla.<\/p>\n<p>Si creamos un&nbsp;<em><strong>Notebook<\/strong><\/em>&nbsp;usando un&nbsp;<em><strong>Kernel<\/strong><\/em>&nbsp;distinto al creado e importamos la librer\u00eda&nbsp;<em>redis<\/em>&nbsp;instalada en un apartado anterior nos deber\u00eda de mostrar un error al ejecutar la l\u00ednea (<strong>Shift + Enter<\/strong>):<\/p>\n<p><a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img4.jpg\" class=\"external\" rel=\"nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-827 size-full\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img4.jpg\" alt=\"\" width=\"219\" height=\"265\"><\/a> <a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img5.jpg\" class=\"external\" rel=\"nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-828 size-full\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img5.jpg\" alt=\"\" width=\"784\" height=\"374\"><\/a><\/p>\n<p>Pero si por el contrario usamos el nuevo <em><strong>Kernel<\/strong><\/em>, la importaci\u00f3n de la librer\u00eda&nbsp;<em>redis<\/em>&nbsp;funcionar\u00e1 correctamente:<a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img6.jpg\" class=\"external\" rel=\"nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-829 size-full\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img6.jpg\" alt=\"\" width=\"227\" height=\"258\"><\/a> <a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img7.jpg\" class=\"external\" rel=\"nofollow\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-830 size-full\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2020\/02\/img7.jpg\" alt=\"\" width=\"779\" height=\"255\"><\/a>Con esto confirmamos que podemos usar el&nbsp;<em>entorno virtual<\/em>&nbsp;a partir de la creaci\u00f3n del&nbsp;<em><strong>Kernel<\/strong><\/em>.<\/p>\n<hr>\n<h1 id=\"comandos-de-gesti\u00f3n-para-kernels\"><span class=\"ez-toc-section\" id=\"Comandos_de_gestion_para_Kernels\"><\/span>Comandos de gesti\u00f3n para Kernels<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Ya vimos anteriormente el comando necesario para la creaci\u00f3n de&nbsp;<em><strong>Kernels<\/strong><\/em>, pero hagamos un breve resumen de comandos para la gesti\u00f3n de estos (creaci\u00f3n\/listado\/eliminaci\u00f3n).<\/p>\n<h2 id=\"listar-kernels\"><span class=\"ez-toc-section\" id=\"Listar_Kernels\"><\/span>Listar Kernels<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Usamos el comando:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">(.redis) jovyan@c0fc212515f0:~\/Redis$ jupyter kernelspec list\nAvailable kernels:\n  python3    \/home\/jovyan\/.local\/share\/jupyter\/kernels\/python3\n  redis      \/home\/jovyan\/.local\/share\/jupyter\/kernels\/redis<\/pre>\n<h2 id=\"crear-kernel\"><span class=\"ez-toc-section\" id=\"Crear_Kernel\"><\/span>Crear Kernel<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Para cear un&nbsp;<em><strong>Kernel<\/strong><\/em>&nbsp;nuevo ejecutamos el comando que vimos en una secci\u00f3n anterior:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">(.redis) jovyan@c0fc212515f0:~\/Redis$ python -m ipykernel install --user --name=Redis2\nInstalled kernelspec Redis in \/home\/jovyan\/.local\/share\/jupyter\/kernels\/redis2<\/pre>\n<p>El nuevo&nbsp;<em><strong>Kernel<\/strong><\/em>&nbsp;ya figura en el listado:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">(.redis) jovyan@c0fc212515f0:~\/Redis$ jupyter kernelspec listAvailable kernels:\n  python3    \/home\/jovyan\/.local\/share\/jupyter\/kernels\/python3\n  redis      \/home\/jovyan\/.local\/share\/jupyter\/kernels\/redis\n  redis2     \/home\/jovyan\/.local\/share\/jupyter\/kernels\/redis2<\/pre>\n<h2 id=\"borrar-kernel\"><span class=\"ez-toc-section\" id=\"Borrar_Kernel\"><\/span>Borrar Kernel<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Para borrar un&nbsp;<em><strong>Kernel<\/strong><\/em> del listado de creados usamos el siguiente comando, confirmando que s\u00ed queremos borrarlo [y]:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">(.redis) jovyan@c0fc212515f0:~\/Redis$ jupyter kernelspec remove redis2\nKernel specs to remove:\n  redis2                \/home\/jovyan\/.local\/share\/jupyter\/kernels\/redis2\nRemove 1 kernel specs [y\/N]: y\n[RemoveKernelSpec] Removed \/home\/jovyan\/.local\/share\/jupyter\/kernels\/redis2<\/pre>\n<p>Este ya no figurar\u00eda en el listado:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">(.redis) jovyan@c0fc212515f0:~\/Redis$ jupyter kernelspec listAvailable kernels:\n  python3    \/home\/jovyan\/.local\/share\/jupyter\/kernels\/python3\n  redis      \/home\/jovyan\/.local\/share\/jupyter\/kernels\/redis<\/pre>\n<hr>\n<h1 id=\"enlaces-de-inter\u00e9s\"><span class=\"ez-toc-section\" id=\"Enlaces_de_interes\"><\/span>Enlaces de inter\u00e9s<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Entornos virtuales en Jupyter &gt;&nbsp;<a title=\"https:\/\/janakiev.com\/blog\/jupyter-virtual-envs\/\" href=\"https:\/\/janakiev.com\/blog\/jupyter-virtual-envs\/\" type=\"\" data-from-md=\"\" class=\"external external_icon\" rel=\"nofollow\" target=\"_blank\">https:\/\/janakiev.com\/blog\/jupyter-virtual-envs\/<\/a><\/p>\n<p>Administrar Kernels &gt;&nbsp;<a title=\"http:\/\/queirozf.com\/entries\/jupyter-kernels-how-to-add-change-remove\" href=\"http:\/\/queirozf.com\/entries\/jupyter-kernels-how-to-add-change-remove\" type=\"\" data-from-md=\"\" class=\"external external_icon\" rel=\"nofollow\" target=\"_blank\">http:\/\/queirozf.com\/entries\/jupyter-kernels-how-to-add-change-remove<\/a><\/p>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Para usar entornos virtuales de&nbsp;Python&nbsp;(venv&nbsp;o&nbsp;virtualenv) instalados con el gestor de paquetes&nbsp;PIP&nbsp;en el entorno de ejecuci\u00f3n de c\u00f3digo&nbsp;Jupyter&nbsp;debemos de usar los pasos que se indican<span class=\"read-more-link\"><a class=\"read-more\" href=\"https:\/\/blog.tiraquelibras.com\/?p=823\">Read More<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":834,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-823","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ciberseguridad"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/823","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=823"}],"version-history":[{"count":0,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/823\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/media\/834"}],"wp:attachment":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}