Instalar Pyenv en W10


pyenv para python es una gran herramienta pero, como rbenv para desarrolladores ruby, pero no es compatible con Windows directamente. Después de un poco de investigación y comentarios de los desarrolladores de Python, descubrí que querían una característica similar para los sistemas Windows.

El autor que ha desarrollado esta herrmienta se inspiró en el problema de pyenv para el soporte de Windows auque el usa Mac y Linux conpyenv , pero algunas empresas todavía usan Windows para el desarrollo. Esta biblioteca es para ayudar a los usuarios de Windows a administrar múltiples versiones de Python.

El autor encontro un sistema similar para rbenv-win para desarrolladores ruby. Este proyecto se bifurcó de rbenv-win y se modificó para pyenv . pyenv-win está madurando cada día gracias por los contribuyentes y apoyos.

 

pyenv

pyenv es una sencilla herramienta de gestión de versiones de Python. Le permite cambiar fácilmente entre varias versiones de Python. Es simple, discreto y sigue la tradición de UNIX de herramientas de un solo propósito que hacen una cosa bien.

Estos son algunos de los camandos mas usados:

 

   commands     List all available pyenv commands
   local        Set or show the local application-specific Python version
   global       Set or show the global Python version
   shell        Set or show the shell-specific Python version
   install      Install 1 or more versions of Python 
   uninstall    Uninstall 1 or more versions of Python
   update       Update the cached version DB
   rehash       Rehash pyenv shims (run this after switching Python versions)
   vname        Show the current Python version
   version      Show the current Python version and its origin
   versions     List all Python versions available to pyenv
   exec         Runs an executable by first preparing PATH so that the selected Python
   which        Display the full path to an executable
   whence       List all Python versions that contain the given executable

 

 

 

 

Instalación

 

Obtener pyenv-win

Obtenga pyenv-win mediante uno de los siguientes métodos:

  • Con pip (para admitir usuarios de Python existentes)
    • Powershell o Git Bash: pip install pyenv-win --target "$HOME\.pyenv"
    • cmd.exe: pip install pyenv-win --target "%USERPROFILE%\.pyenv"
  • Con archivo zip
    1. Enlace de descarga: pyenv-win
    2. Cree un .pyenvdirectorio si no existe bajo $HOMEo%USERPROFILE%
    3. Extraiga y mueva archivos a
    • Powershell o Git Bash: $HOME/.pyenv/
    • cmd.exe: %USERPROFILE%\.pyenv\
    1. Asegúrese de ver la bincarpeta debajo%USERPROFILE%\.pyenv\pyenv-win
  • Con Git
    • Powershell o Git Bash: git clone https://github.com/pyenv-win/pyenv-win.git "$HOME/.pyenv"
    • cmd.exe: git clone https://github.com/pyenv-win/pyenv-win.git "%USERPROFILE%\.pyenv"
  • Con chocolate
    • choco install pyenv-win (esto también instala todas las variables de entorno)

 

Terminar la instalación

NOTA: Si está ejecutando Windows 10 1905 o más reciente, debe deshabilitar el iniciador de Python incorporado a través deshabilitado los alias de «Instalador de aplicaciones» para Python,para ello  invoquea la configuración predeterminada de Windows 10 en la pantalla de su PC usando las teclas de acceso directo de Windows + I.

La imagen tiene un atributo ALT vacío; su nombre de archivo es alias.jpg

Haga clic en Aplicaciones . Se abrirán las opciones adicionales para las aplicaciones en una nueva página y puede desactivar ahi los alias para Python.

 

Si lo instaló con Chocolatey, puede pasar al paso 3.

  1. Agregue PYENV y PYENV_HOME a sus variables de entorno
    1. Utilizando PowerShell o Windows 8 / ejecución de Terminal superior[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User") [System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User") Nota: PYENV_HOME es compatible con pipenv
  2. Ahora agregue las siguientes rutas a su variable USER PATH para acceder al comando pyenv. Ejecute lo siguiente en PowerShell o Windows 8 / Terminal superior: [System.Environment]::SetEnvironmentVariable('path', $HOME + "\.pyenv\pyenv-win\bin;" + $HOME + "\.pyenv\pyenv-win\shims;" + $env:Path,"User")
  3. Cierre y vuelva a abrir su aplicación de terminal y ejecute pyenv --version
    1. Si el valor de retorno es la versión instalada de pyenv, continúe con el Paso 4
    2. Si recibe un error de comando no encontrado, asegúrese de que las variables de entorno estén configuradas correctamente a través de la GUI: Esta PC → Propiedades → Configuración avanzada del sistema → Avanzado → Variables de entorno … → RUTA
    3. Si recibe un error de comando no encontrado y está utilizando Visual Studio Code u otro IDE con un terminal integrado, reinícielo e intente nuevamente
  4. Ahora ejecute el pyenv rehashdirectorio de inicio
    • Si recibe un error, repita los pasos nuevamente. .
  5. Ejecutar pyenvpara ver la lista de comandos que admite.

La instalación está terminada.

 

Soporte  de 32 bits

  • Con Git
    • cambiar directorio a %USERPROFILE%\.pyenvviacd
    • ejecutar el siguiente comando git checkout -b 32bit-train origin/32bit-train
    • ahora ejecuta pyenv --versionnecesitas ver 2.32.x
  • Con pepita
    • Powershell o Git Bash: pip install pyenv-win==2.32.x --target $HOME\.pyenv
    • cmd.exe: pip install pyenv-win==2.32.x --target %USERPROFILE%\.pyenv
  • Con archivo zip
    1. Enlace de descarga: pyenv-win
    2. Cree un .pyenvdirectorio si no existe bajo $HOMEo%USERPROFILE%
    3. Extraiga y mueva archivos a
    • Powershell o Git Bash: $HOME/.pyenv/
    • cmd.exe: %USERPROFILE%\.pyenv\
    1. Asegúrese de ver la bincarpeta debajo%USERPROFILE%\.pyenv\pyenv-win

 

 

Uso

  • Actualice la lista de versiones de Python pyenv updatedetectables usando: comando para pyenv-win 2.64.xy 2.32.xversiones

PS C:\Users\carlo> pyenv update
:: [Info] :: Mirror: https://www.python.org/ftp/python
:: [Info] :: Scanned 141 pages and found 479 installers.
PS C:\Users\carlo>

  • Para ver una lista de las versiones de Python compatibles con pyenv windows: pyenv install -l
  • Para instalar una versión de Python: pyenv install 3.8.5

PS C:\Users\carlo> pyenv install 3.8.5
:: [Info] :: Mirror: https://www.python.org/ftp/python
:: [Downloading] :: 3.8.5 …
:: [Downloading] :: From https://www.python.org/ftp/python/3.8.5/python-3.8.5-amd64-webinstall.exe
:: [Downloading] :: To C:\Users\carlo.pyenv\pyenv-win\install_cache\python-3.8.5-amd64-webinstall.exe
:: [Installing] :: 3.8.5 …
:: [Info] :: completed! 3.8.5
PS C:\Users\carlo>

  • Nota: Es posible que aparezca un asistente de instalación para algunas instalaciones no silenciosas. Deberá hacer clic en el asistente durante la instalación. No es necesario cambiar ninguna opción en él. o puede usar -q para bastante instalación
    • También puede instalar varias versiones en un solo comando: pyenv install 2.4.3 3.6.8
  • Para configurar una versión de Python como la versión global: pyenv global 3.8.5
    • Esta es la versión de Python que se usará de forma predeterminada si no se establece una versión local (ver más abajo).
    • Nota: Primero se debe instalar la versión.
  • Para establecer una versión Python como la versión local: pyenv local 3.8.5.
    • La versión proporcionada se utilizará siempre que pythonse llame desde esta carpeta. Esto es diferente a un entorno virtual, que debe activarse explícitamente.
    • Nota: Primero se debe instalar la versión.
  • Después de (des) instalar cualquier biblioteca usando pip o modificar los archivos en la carpeta de una versión, debe ejecutar pyenv rehashpara actualizar pyenv con nuevos shims para Python y los ejecutables de las bibliotecas.
    • Nota: Esto debe ejecutarse fuera de la .pyenvcarpeta.
  • Para desinstalar una versión de Python: pyenv uninstall 3.8.5
  • Para ver qué Python está usando y su ruta: pyenv version

PS C:\Users\carlo> pyenv version
3.8.5 (set by C:\Users\carlo.python-version)
PS C:\Users\carlo>

  • Para ver todas las versiones de Python instaladas en este sistema: pyenv versions

PS C:\Users\carlo> pyenv versions

  • 3.8.5 (set by C:\Users\carlo.python-version)
    PS C:\Users\carlo>

 

Cómo recibir actualizaciones

  • Si se instala a través de pip
    • Agregue la ruta instalada de pyenv-win al easy_install.ptharchivo que se encuentra en site-package. Ahora pyenv-win es reconocido por pip
    • Recibe actualizaciones a través de pip pip install --upgrade pyenv-win
  • Si se instala a través de Git
    • Vaya a %USERPROFILE%\.pyenv\pyenv-win(que es su ruta instalada) y ejecutegit pull
  • Si se instala a través de zip
    • Descarga el zip más reciente y extráelo
    • Ir a %USERPROFILE%\.pyenv\pyenv-winy reemplazar las carpetas libexecy bincon los nuevos que acaba de descargar

 

Preguntas más frecuentes

  • Pregunta: ¿pyenv para windows es compatible con python2?
    • Respuesta: Sí, admitimos python2 desde la versión 2.4+ hasta que python.org lo elimine oficialmente.
    • Las versiones inferiores a 2.4 utilizan instaladores Wise obsoletos y tienen problemas para instalar varias versiones de parches, a diferencia de Windows MSI y los nuevos instaladores Python3 que admiten instalaciones de «extracción».
  • Pregunta: ¿pyenv para windows es compatible con python3?
    • Respuesta: Sí, admitimos python3 desde la versión 3.0. Lo apoyamos desde 3.0 hasta que python.org lo elimine oficialmente.
  • Pregunta: Tengo el problema batch file cannot be found.al instalar Python, ¿qué debo hacer?
    • Respuesta: puede ignorarlo. Está llamando al pyenv rehashcomando antes de crear el archivo bat en algunos dispositivos.
  • Pregunta: El sistema se atasca al desinstalar la versión de Python, ¿qué hacer?
    • Respuesta: Navegue a la ubicación donde instaló pyenv, abra su carpeta de ‘versiones’ (generalmente %USERPROFILE%\.pyenv\pyenv-win\versions) y elimine la carpeta de la versión que desea eliminar.
  • Pregunta: Instalé pyenv-win usando pip. ¿Cómo puedo desinstalarlo?
  • Pregunta: pyenv-win no se reconoce, pero he configurado ENV PATH?
    • Respuesta: De acuerdo con Windows, al agregar la ruta en las variables Usuario o Sistema, para la variable Usuario debe cerrar la sesión y volver a iniciar sesión para reflejar los cambios. Para la variable del sistema, no es necesario.

 

 

Fuente https://github.com/pyenv-win/pyenv-win

Anuncio publicitario

Git, GitHub y For-and-Branch Git Workflow


GIT

Antes de empezar , debemos entender a Git como el corazón de GitHub: Git es un sistema de control de versiones desarrollado por Linus Torvalds (el hombre que creó Linux).

Cuando los desarrolladores hacen un nuevo proyecto, siempre continúan haciéndole modificaciones al código. Incluso después de la puesta en marcha de los proyectos, todavía necesitan actualizar las versiones, corregir errores, agregar nuevas funciones, etc.   El sistema de control de versiones ayuda a registrar los cambios realizados al código. Aún más, registra quién realizó los cambios y puede restaurar el código borrado o modificado.No hay códigos sobrescritos ya que Git guarda varias copias en el repositorio. .

HUB

Si Git es el corazón de GitHub, entonces Hub es su alma. El hub de GitHub es lo que convierte una línea de comandos, como Git, en la red social más grande para desarrolladores.

Además de contribuir a un determinado proyecto, GitHub le permite a los usuarios socializar con personas de ideas afines. Puedes seguir a las personas y ver qué hacen o con quién se conectan.

Repository

Un repositorio o “repo” es un directorio donde se almacenan los archivos de tu proyecto. Puede estar ubicado en el almacenamiento de GitHub o en un repositorio local en tu computadora. Puedes almacenar archivos de código, imágenes, audios o todo lo relacionado con el proyecto en el repositorio.

Branch

Branch, que se traduce como rama, es una copia de su repositorio. Puede utilizar la rama cuando quiera hacer un desarrollo de forma aislada.Trabajar en una rama no afectará el repositorio central u otras ramas. Si has completado el trabajo, puedes combinar tu rama con otras ramas y con el repositorio central mediante una pull request.

Pull Request

Pull request significa que les informas a los demás que has enviado al repositorio principal el cambio que hiciste en una rama. Los colaboradores del repositorio pueden aceptar o rechazar una pull request. Una vez abierta, puede discutir y revisar su trabajo con los colaboradores.

Estos  son los pasos para crear una pull request en GitHub:

  1. Vaya al repositorio y busca el menú Branch.
  2. En el menú Branch, elija la rama que contenga su aportacion.
  3. Haga clic en el botón New pull request al lado del menú Branch.
  4. Escriba el título y la descripción de tu pull request.
  5. Pulse el botón Create pull request.

Bifurcar un repositorio

Bifurcar un repositorio significa crear un nuevo proyecto basado en el repositorio existente. En términos simples, esto significa que copia un repositorio existente, hace los cambios necesarios, almacena la nueva versión como un nuevo repositorio y llama a esto su propio proyecto.

Esta es una muy buena función que propulsa el desarrollo del proyecto. Debido a que es un proyecto totalmente nuevo, el repositorio central no se verá afectado. Si el repositorio principal es actualizado, también puedes aplicar esa actualización a tu bifurcación actual.

Sigue estos pasos para bifurcar un repositorio en GitHub:

  1. Vaya al repositorio que quiere bifurcar.
  2. Haga clic en el botón Fork

GitHub no es solo para desarrolladores

GitHub es una excelente plataforma que cambia la forma en que trabajan los desarrolladores. Sin embargo, todo aquel que quiera administrar su proyecto de manera eficiente y trabajar en colaboración también puede usar GitHub.

Si su equipo trabaja en un proyecto que necesita actualizaciones constantes y quieres hacerle un seguimiento a los cambios realizados, GitHub es adecuado para usted. Hay otras alternativas como GitLab o BitBucket, pero GitHub debería estar entre sus opciones.

 

Instalar Git con apt-get

Una forma sencilla y rápida de instalar Git es usando el administrador de paquetes apt, pero la versión que será descargada puede que sea anterior a la versión más reciente de Git.

  1. Para comenzar debemos ejecutar las actualizaciones generales del sistema operativo y sus paquetes, en el caso de Ubuntu abrimos la terminal y ejecutamos el siguiente comando:
    $ sudo apt-get update
    
  2. Luego escribimos y ejecutamos el siguiente comando en la terminal:
    $ sudo apt-get upgrade
    
  3. Git se instala con el siguiente comando:
    $ sudo apt-get install git
    
  4. Para verificar que la instalación fue exitosa y qué versión de git está instalada escribimos:

     

    $ git --version
    

 

 

Configurar Git

Lo primero que debemos hacer luego de terminar de instalar Git, es configurar nuestro perfil de Git con nuestro nombre y correo, es importante porque cada cambio que confirmemos estará asociado a esta información.

  1. Configura tu nombre de usuario con el comando que te mostramos a continuación y sustituye Nombre Apellido por tu nombre:
    git config --global user.name "Nombre Apellido"
    
  2. Configura tu correo electrónico de Git usando el siguiente comando, reemplazando el correo [email protected] por el tuyo:
    git config --global user.email [email protected]
    
  3. Si queremos validar lo que hemos configurado ejecutamos el siguiente comando y lo comprobamos:
    git config --list
    

Primeros pasos con Git usando un ejemplo 

 

Eche un vistazo al libro Pro Git 3 ] , que  es la principal fuente de información sobre Git.

Si no tiene una cuenta de GitHub, haga la guía Hello World en GitHub y cree una. Tenga en cuenta que para contribuir al proyecto PRMC se requiere una cuenta de GitHub. Observe que en la guía Hello World, la rama maestra se denomina rama principal . Por favor, cree un archivo README.md para el repositorio Hello World, como sugiere la guía.

Ahora, vamos a hacer lo mismo que hubiéramos hecho usando la interfaz web de GitHub (excepto  crear un Repo), pero ahora usando la terminal que será la interfaz más utilizada para tratar con Git.

Primero, si Git no está instalado en su host (intente ejecutar git en una terminal), instálelo con:   

sudo apt install git   

Clone (descargue) el repositorio de Hello World. Debe hacer clic en el botón «Código» (seleccione «https», no «descargar un archivo zip»). Entonces ejecute: 

  cd hello_world 

Observe que se ha creado un nuevo directorio llamado como el nombre del repositorio en GitHub, y que dentro puede encontrar el archivo README.md escrito en Markdown .

Cree (y cambie a) una rama de funciones llamada improvement_readme . En tu terminal escriba: 

  git checkout - b better_readme   

Modifique el archivo README.md . Agregue, por ejemplo, un enlace a la guía Hello World. Utilice un editor ASCII ( nano , por ejemplo):   

nano README

 Vaya a la    la guia Hello World en n GitHub para consultar mas notas interesantes sobre el ejemplo:

https://guides.github.com/activities/hello-world/

Confirme su  modificación

  git commit -am "Providing the Hello World link"

    En su primera confirmación, se le pedirá:   

 git config --global user.email "[email protected].com"

 Por favor, ingrese dicha información.Después de la confirmación , su repositorio local está por delante de su repositorio de origen (copia en GitHub del) repositorio remoto. Esto significa que su local tiene modificaciones que el origen no tiene.

Sincronice su local y el origen usando push : 

  git push 

Tenga en cuenta que si no ha actualizado una clave SSH pública (o la clave privada correspondiente no está instalada correctamente en su computadora), el servidor de GitHub solicita su nombre de usuario y contraseña, y esto es algo que sucederá con cada inserción . Para evitar esta entrada repetitiva de su información de inicio de sesión de GitHub, debe iniciar sesión en GitHub utilizando criptografía de clave pública . Para eso, debe tener un par de claves, una pública y otra privada, y cargar la pública en GitHub.

El primer paso es verificar si ya tiene un par de claves (si está usando la distribución de Xubuntu recién instalada, obviamente no necesita verificar nada y puede ir directamente al siguiente paso). Simplemente revise su directorio $ HOME / .ssh con:  

 ls - l ~ /. ssh  

y si encuentra un par de archivos con casi el mismo nombre, y uno de  ellos termina en .pub , probablemente posea un par de claves SSH.

Creemos un par de claves (si no tienes una o si prefieres crear una nueva). Abra una terminal y escriba:  

 ssh - keygen - t rsa - b 4096 - C " your_email @ example . com "   

   utilizando la dirección de correo electrónico que proporcionó cuando creó su cuenta de GitHub. Luego, cuando se le solicite:   Introduzca un archivo en el que al guardar la clave (/ hogar / te /. Ssh / id_rsa ):         simplemente presione la tecla Enter para seleccionar dicho prefijo de salida. De lo contrario, escriba uno diferente, pero no cambie la ruta al directorio .ssh .

Ahora SSH debería solicitarle una frase de contraseña. Si escribe uno, se le pedirá cada vez que envíe sus confirmaciones a GitHub. Hay dos opciones para evitar esto:

No ingrese ninguna contraseña (simplemente presionando la tecla Enter nuevamente en el paso anterior). Esto tiene el inconveniente de que si alguien roba tus claves, podría acceder a GitHub como si estuvieras tú.

Ingrese una frase de contraseña y configure ssh-agent para que usted la envíe a GitHub. Esta opción es la preferible porque se le pedirá la contraseña solo cuando se inicie ssh-agent ( Xfce lo hace por usted).

Ahora es el momento de comprobar si ssh-agent ya se está ejecutando en su ordenador  -Esto se puede hacer con:   

ps aux | grep ssh - agent

    y en el caso de Xubuntu, debería obtener algo similar a: 

      989 ?        Ss     0:00 /usr/bin/ssh-agent /usr/bin/im-launch startxfce4
     1433 pts/0    S+     0:00 grep --color=auto ssh-agent

Esto significa que hay dos procesos en cuya descripción existe la cadena ssh-agent . La primera entrada es el proceso del agente. El segundo es el grep ejecutándose al mismo tiempo que el ps .

Si el ssh-agent no se estaba ejecutando, se puede iniciar para que se ejecute en segundo plano con:

     eval "$ (ssh-agent -s)"

   pero no necesita hacer eso en su instalación de Xubuntu, porque (recuerde) el ssh-agent del entorno de escritorio Xfce lo inicia.

Con sus llaves, ejecuta:  

 ssh - agregar ~ /. ssh / id_rsa 

y se le pedirá la contraseña.

Vaya ahora a GitHub -> Configuración -> Claves SSH y GPG -> Nueva clave SSH. Abra una terminal y escriba:  

 cat . ssh / id_rsa . pub 

y copie y pegue el contenido de dicho archivo (que termina con su dirección de correo electrónico) dentro del espacio donde puede leer » Empieza con ‘ssh-rsa’, … «. No olvide poner un título) al par de claves.

Cuando utilice la clave por primera vez (clonando un repositorio o presionando una confirmación), el cliente SSH le advertirá que no se puede establecer la autenticidad de github.com . Esto es normal y debería suceder solo una vez. Escriba sí . Si este problema persiste, entonces podría estar sufriendo un ataque de hombre en el medio .

Revise el flujo de trabajo de Fork y Branch Git . Básicamente, este «protocolo» explica que para contribuir a un repositorio de código abierto alojado por GitHub sin pertenecer al equipo de desarrollo, debe realizar algunos pasos de git (y algunos de ellos se encuentran a continuación).

Haga una bifurcación del proyecto PRMC . Llamaremos a este repositorio el upstream , cuya URL es

 [email protected]:Sistemas-Multimedia/PRMC.git

 Esta información se puede encontrar cuando clona PRMC. Sin embargo, tenga en cuenta que la acción de clonar PRMC es una pérdida de tiempo porque no puede contribuir directamente a ella (recuerde, debe clonar su propio repositorio).

Agregar el control remoto  upstream con: 

  git remote add upstream [email protected].com:Sistemas-Multimedia/PRMC.git

   Compruebe que todo ha funcionado con:   git remoto – v  donde debería ver dos controles remotos: origin y upstream . Algo parecido a:

 

     origin   [email protected]:you_at_GitHub/PRMC.git (fetch)
     origin   [email protected]:you_at_GitHub/PRMC.git (push)
     upstream [email protected]:Sistemas-Multimedia/PRMC.git (fetch)
     upstream [email protected]:Sistemas-Multimedia/PRMC.git (push)

Para actualizar su repositorio local:

git pull upstream master

Instalación de python en Linux


Muchos proyectos que manejan elementos multimedia están escritos actualmente en Python como por ejemplo el proyecto PRMC, que es una colección de módulos de Python escritos en Python [ 3 ] ), por lo lo tanto, necesitará un intérprete y saber cómo desarrollar / ejecutar programas Python ( módulos y paquetes ). .

La mayoría de los sistemas operativos actuales basados ​​en Unix (Linux, FreeBSD y OSX) utilizan Python para ejecutar algunas de sus «tareas diarias», lo que significa que ya hay disponible un intérprete de Python. Sin embargo, normalmente es mejor utilizar nuestro propio intérprete porque:

  1. Podemos elegir la versión de Python y los paquetes.
  2. Podemos optimizar la compilación del intérprete en función de nuestras necesidades (por ejemplo, incluyendo soporte Tk o no).
  3. Por defecto, todos los paquetes de Python se instalarán en un repositorio diferente de los paquetes del sistema, lo que facilita el aislamiento de Python del sistema / usuario y la eliminación del intérprete.

En Windows, debe instalar Python, sí o sí, desde el sitio web oficial . Sin embargo, tenga en cuenta que esta «guía» solo contempla la instalación de Python en máquinas con sistema operativo basado en Unix.

Instalación de Python.

         sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
         cd
         curl https://pyenv.run | bash
         cat << EOF >> ~/.bashrh
         export PATH="$HOME/.pyenv/bin:$PATH"
         eval "$(pyenv init -)"
         EOF
         source ~/.bashrc
         pyenv install -v 3.8.5
         pyenv virtualenv 3.8.5 tm

 

  • Recuerde que necesitará activarlo cuando quiera trabajar en este proyecto:   
        pyenv activate tm

 Es una buena idea agregar esto al archivo ~ / .bashrc .

  • Instale un IDE para programar con Python. Recomiendo a Thonny si no está acostumbrado a ningún otro.
     pip instalar thonny  

Recursos de programación Python.

Si ni domina Python para seguir este curso puede  seguir algún tutorial de programación de Python, como The Python Tutorial 1 ] sobre todo si se da cuenta de que el lenguaje es un revés para ti.

Si necesita comenzar con Python desde cero, una introducción a Python como este taller de YAPT 2 ] también podría ser útil. 

También puede consultar también el tutorial de Python de ZetCode .

Aquí otros enlaces interesantes sobre Python:

[1]   El tutorial de Python .

[2]   YAPT .

[3]   Sitio web de Python .

Instalar Xubuntu en un USB


La siguiente “guía” le ayuda a instalar Xubuntu en una unidad USB externa , que debe tener al menos 8GB de capacidad (la instalación mínima de Xubuntu 20.04 necesita alrededor de 5GB). También necesitará un disco USB externo temporal con al menos 4GB para arrancar desde él la imagen de instalación de Xubuntu (o para grabar un disco óptico ).

Por supuesto si tiene un ordenador con suficientes recursos (al menos 8 GB de RAM), también puedes instalar Xubuntu en una máquina virtual (VirtualBox, por ejemplo). En este caso, necesitará al menos 4 GB de RAM y 8 GB de espacio en disco a Xubuntu.

Xubuntu es un sistema operativo Linux basado en Ubuntu y desarrollado por la comunidad.

Xubuntu es un sistema operativo elegante y fácil de usar. Xubuntu incluye Xfce, que es un entorno de escritorio estable, ligero y configurable.

Es ideal para quien quiera lo mejor de sus PCs, portátiles y netbooks dándoles un aspecto moderno y obteniendo funcionalidades suficientes y eficientes para el día a día. Además, funciona bien en máquinas antiguas.

Para más información, visite el sitio web de Xubuntu.

Acerca del nombre

La «X» en Xubuntu proviene de Xfce, el ambiente de escritorio de Xubuntu. Así también la palabra «ubuntu» muestra la dependencia y el uso del núcleo de Ubuntu, que a su vez representa el núcleo filosófico del sistema operativo. Un significado aproximado de la palabra ubuntu es «humanidad hacia los demás». Para conocer más sobre la filosofía e ideales detrás de Ubuntu y Xubuntu puede ir a la página Filosofía de Ubuntu [En inglés].

Además de utilizar el núcleo de Ubuntu, Xubuntu también utiliza la infraestructura proporcionada y patrocinada por Canonical Ltd., una compañía fundada por Mark Shuttleworth.

 Instalación de Xubuntu en un pen-drive USB

Suponiendo que haya decidido usar Xubuntu 20.04 en un disco USB, estos son los pasos que debe realizar (para instalar Xubuntu en una partición de disco de su computadora, las instrucciones son casi las mismas):

  1. Descargue la imagen de instalación desde aquí .
  2. “Grabe” la unidad USB de 4GB con la imagen. Dependiendo de su sistema operativo actual, use las siguientes instrucciones para Windows , OSX , Ubuntu (y derivados) , o la consola para todos los Linux.
  3. Inicie la imagen desde el puerto USB. Este paso depende de su ordenador. La mayoría de las PC pueden elegir el dispositivo de inicio presionando la tecla F12 cuando la PC se está iniciando. En una Mac, debe mantener presionada la tecla alt cuando se está iniciando.
  4. Seleccione la opción Probar Xubuntu sin instalar .
  5. Cuando el sistema operativo se esté ejecutando, con fi gure la red.
  6. Inserte también la unidad USB de 8GB donde se instalará Xubuntu.
  7. Seleccione Instalar Xubuntu 20.04 LTS .
  8. Seleccione inglés como idioma utilizado durante la instalación y el sistema instalado. Esto le ayudará en caso de que necesite buscar información en Internet, proporcionando las descripciones de los errores en inglés.
  9. Seleccione la distribución de su teclado (probablemente español ).
  10. Abra una terminal y escriba:   df – h para ver todas las particiones de disco montadas y su capacidad. Tenga en cuenta que no se debe montar ninguna partición de / dev / sda (el disco duro) (aunque puede hacerlo, no es necesario montar ninguna partición del disco duro), la partición / dev / sdb1 (con Xubuntu image) debe montarse y, finalmente, si Thunar (el administrador de archivos predeterminado en Xubuntu) ha reconocido la primera partición de la segunda unidad USB externa , debe aparecer como / dev / sdc1. Esta partición debe desmontarse para instalar en ella Xubuntu. De todos modos, si continúa con el proceso de instalación sin desmontarlo, el instalador le pedirá que lo haga. En esta descripción, se ha supuesto que su ordenador  solo tiene un disco duro.
  11. Elija Descargar actualizaciones mientras instala Xubuntu e Instale software de terceros para gráficos y hardware Wi-Fi y formatos de medios adicionales , para tener acceso al último software disponible para Ubuntu (y sus derivados).
  12. Elija Borrar disco e instale Xubuntu . Ignore las funciones avanzadas. Espere un par de minutos
  13. Seleccione la unidad correspondiente a la unidad USB de 8 GB ( / dev / sdc ). ¡No elija / dev / sda (el disco principal de su ordenador  pues podria borrar su contenido)! Seleccione / dev / sdc !!
  14. En este punto de la instalación, debe considerar (dependiendo de la cantidad de memoria RAM instalada en su computadora y el tamaño de la unidad USB) crear una partición específica para realizar el intercambio. La regla del pulgar es crear una partición con el mismo tamaño que la RAM. Sin embargo, probablemente no pueda hacer eso en una unidad USB de 8 GB porque se necesitan al menos 5 GB para una instalación de Xubuntu. De todos modos, tenga en cuenta que este paso es opcional porque siempre puede realizar el intercambio en un archivo (un proceso un poco más lento que usar la partición dedicada). Tenga en cuenta también que PRMC requiere solo algunos MB de memoria para ejecutarse y, por lo tanto, probablemente no necesitará intercambiar ninguna página de memoria en absoluto. Si decide crear una partición de intercambio específica, haga clic en “herramienta avanzada de particionamiento” y realice las modificaciones que desee, y también verifique que el cargador de arranque ( GRUB ) esté instalado en / dev / sdc1 . Pero recuerde, todas las acciones descritas en este punto son opcionales (excepto seleccionar / dev / sdc1 para GRUB).
  15. Haga clic en Instalar ahora. Algo parecido a: Si continúa, los cambios que se enumeran a continuación se escribirán en los discos. De lo contrario, podrá realizar más cambios manualmente. ADVERTENCIA: Esto destruirá todos los datos de las particiones que haya eliminado, así como de las particiones que se formatearán. Se cambian las tablas de particiones de los siguientes dispositivos:  SCSI8 (0,0,0) (sdc) Se formatearán las siguientes particiones:  partición # 1 de SCSI8 (0,0,0) (sdc) como ESP  partición # 2 de SCSI8 (0,0,0) (sdc) como ext4
  16. Elija su zona horaria.
  17. Configure su cuenta personal, nombre de host y proceso de registro.
  18. Espere a que finalice la instalación y arranque su nuevo Xubuntu. No se preocupe si grub etiqueta Xubuntu como Ubuntu. Esto es normal.

Primeros pasos con Terraform


Desde hace un tiempo se oye hablar mucho de DevOps, una fusión que combina las áreas de   Desarrollo,Operaciones y Control de calidad

Es una extensión natural de metodologías Agile y es habitual el uso de los principios CAMS, cuyas siglas vienen de:

  • Cultura relacionada con comunicación humana, procesos y herramientas
  • Automatización de procesos
  • Monitorización
  • Sharing feedback, buenas prácticas y conocimiento

En DevOps son habituales las prácticas siguientes:

  • Planificación ágil
  • Despliegue continuo (CI/CD). La subida de cambios al repositorio de código desencadena la ejecución de pruebas automatizadas que finalmente  realizan el despliegue de los cambios tras superarse las pruebas.
  • Infraestructura como código (Infrastructure as Code). Se trata del desarrollo de scripts para las tareas de despliegue y gestión de la infraestructura
  • Contenedorización. Combinada con la Infraestructura como código permite el despliegue instantáneo de aplicaciones en contenedores.
  • Microservicios. Facilita el aislamiento de problemas y maximiza la producción
  • Infraestructura cloud. Favorece la disponibilidad y la automatización.

 

En este post vamos a ver Terraform, una herramienta para construir, modificar y versionar infraestructura de forma segura y eficiente.

Terraform es una herramienta de orquestación de código abierto desarrollado por Hashicorp que nos permite definir nuestra infraestructura como código, esto quiere decir que es posible escribir en un fichero de texto la definición de nuestra infraestructura usando un lenguaje de programación declarativo y simple.

Terraform tiene soporte para una gran cantidad de proveedores de infraestructura local o en la nube, Amazon Web Services (AWS), Digital Ocean, Microsoft Azure, VMware vSphere, son ejemplos de proveedores de servicios. Puedes ver todos los proveedores soportados en la documentación de Terraform.

 

Estos proveedores de nube cuentan con sus propias herramientas de infraestructura como código, por ejemplo algunos de ellos como Amazon AWS que tiene a CloudFormation que solo soporta la infraestructura en Amazon, OpenStack tiene Heat, Azure tiene Resource Manager, pero Terraform no está cerrado a un proveedor en específico, puede trabajar con todos ellos e incluso de forma simultánea sin ningún inconveniente.

Instalación en sistema operativo Windows

La instalación de Terraform es muy sencilla. Se descarga como un binario que hay que descomprimir y luego se coloca en un directorio incluido en el PATH del sistema y. Probamos su funcionamiento desde la terminal con terraform donde a encontramos el ejecutable.

Bueno, estos son los pasos  a seguir para instalar Terraform en ambiente Windows:

Nos iremos a la  página oficial https://www.terraform.io/downloads.html.

 

Seleccionamos el sistema operativo y la arquitectura, en nuestro caso elegiremos Windows 64­bit puesto que lo instalaremos en una maquina Windows 10.

Creamos un directorio para el ejecutable de Terraform,copiamos el fichero descargado anteriormente al directorio terraform y nos situamos en el directorio terraform.,Justo entonces descomprimimos el ejecutable ( necesitaremos el winzip instlado ) en el interior del directorio creado anteriormente.

Ahora vamos a añadir la variable de entorno de Terraform para el usuario, para ello en el de cortana buscamos «Configuracion avanzada del sistema » y pinchamos en este . A continuacion pulsamos en Variables de entorno

 

En la siguiente pantalla pulsamos el botón Nueva.

Asignamos un nombre a la variable y en el botón Examinar archivo buscamos la ruta del ejecutable de Terraform.

Ahora desde una ventana de símbolo de sistema comprobamos que Terraform funciona escribiendo terraform -v.

 

NOTA:  En el caso de usar Linux seguiriamos unos pasos similares: Seleccionamos desde la pagina de descargas de Terraform el sistema operativo y la arquitectura, ( normalmente Linux 64­bit puesto si por ejemplo lo instalasemos en una maquina Debian jessie) .Creamos un directorio para los binarios de Terraform y moveremos el fichero descargado anteriormente al interior de la carpeta.Nos situamos en el directorio terraform,descomprimimos los binarios de Terraform con el comando unzip.Finalmente exportamos las variables de entorno de Terraform con el comando export PATH=/home/usuario/terraform:$PATH y comprobamos que se ha instalado bien ejecutando terraform –version.

 

Sintaxis

Hashicorp usa su propio lenguaje de configuración para la descripción de la infraestructura.

Los archivos Terraform se pueden escribir en dos formatos:

  • HashiCorp Configuration Language (HCL). El formato preferido es el HCL. Desde Terraform 0.12 está disponible HCL2 y se recomienda usar HCL2La extensión de los archivos es .tf

  • JSON. La extensión de los archivos es .tf.json

El objetivo de Terraform es declarar recursos. Todas las características del lenguaje giran en torno a hacer que la definición de recursos sea más flexible y convniente.

Los recursos puede agruparse en módulos, que crean una unidad de configuración de nivel más alto. Un recurso describe un objeto básico de infraestructura, mientras que un módulo describe un conjunto de objetos y sus relaciones para crear un sistema mayor.

 

Una configuración Terraform consta de un módulo raíz donde comienza la evaluación. El módulo puede contener módulos hijo que se van llamando unos a otros. La configuración más sencilla de módulo contendría sólo un archivo .tf (main.tf) aunque se recomienda una organización como la siguiente:

  • main.tf: Configuración de lo recursos del módulo

  • providers.tf: Proveedor de los recursos del módulo.Terraform puede crear stacks de infraestructura en varios proveedores. Por ejemplo, una configuración podría crear infraestructura en Google Cloud Platform y en OpenStack-DI.Hay gran cantidad de proveedores Terraform, tanto oficiales, mantenidos por Hashicorp, (AWS, Azure, Google Cloud Platform, Heroku, Kubernetes, MongoDB Atlas, OpenStack, VMware Cloud, VMware vSphere, …​) como de la comunidad y terceros (OpenShift, Trello, Telegram, …​).Porejemplo para openstack usarimos este archivo

     

    provider "openstack" {
      user_name   = var.openstack_user_name
      tenant_name = var.openstack_tenant_name
      password    = var.openstack_password
      auth_url    = var.openstack_auth_url
    }
  • variables.tf Variables de entrada-Las variables de entrada se usan como parámetros para los módulos. Se crean mediante bloques variable.Las variables se usan siguiendo esta sintaxis var.<variable>. POr ejemplo para openstack usariamos esta sintaxis:

     

    variable "openstack_user_name" {
        description = "The username for the Tenant."
        default  = "your-openstack-user"
    }
    
    variable "openstack_tenant_name" {
        description = "The name of the Tenant."
        default  = "your-openstack-project"
    }
    
    variable "openstack_password" {
        description = "The password for the Tenant."
        default  = "your-openstack-password"
    }
    
    variable "openstack_auth_url" {
        description = "The endpoint url to connect to OpenStack."
        default  = "http://openstack.di.ual.es:5000/v3"
    }
    
    variable "openstack_keypair" {
        description = "The keypair to be used."
        default  = "your-openstack-keypair-name"
    }



  • output.tf: Variables de salida.Sse usan para pasar valores a otros módulos o para mostrar en el CLI un resultado tras un despliegue con terraform apply.Se definen con bloques output y un identificador único. Normalmente, toman como valor una expresión (p.e. una IP generada para una instancia creada).

NOTA: Para evitar introducir datos sensibles en los archivos de configuración y evitar que queden expuestos en el sistema de control de versiones es buena práctica configurar valores sensibles en variables de entorno.

El convenio de Terraform es que definamos en la shell las variables precedidas de TF_VAR_. Por ejemplo, definimos una variable de entorno TF_VAR_PASSWORD que será accedida por Terraform como PASSWORD.

Seguiremos estos pasos:

  1. Configurar la variables en la shell

    $ export TF_VAR_PASSWORD=xxxx
  2. Cargar la variable en Terraform en el archivo variables.tf

    ...
    variable "PASSWORD" {} 
    ...
      La variable de entorno TF_VAR_PASSWORD es reconocida en Terraform como PASSWORD
  3. Usar la variable en Terraform en el el archivo providers.tf

    provider "openstack" {
      user_name   = var.openstack_user_name
      tenant_name = var.openstack_tenant_name
      password    = var.PASSWORD 
      auth_url    = var.openstack_auth_url
    }

Idenpotencia

Una característica muy interesante de Terraform es la idempotencia, así como la facilidad para aplicar cambios. Si volvemos a ejecutar un despliegue con terraform apply y no ha habido cambios en los archivos de configuración tras el último despliegue (cuyo estado quedó almacenado en el archivo .tfstate), el despliegue quedará intacto. Es decir, no se volverá a crear infraestructura repetida ni se reemplazará la infraestructura creada por una nueva si no hay cambios en los archivos de configuración.

Sin embargo, si modificamos la configuración modificando los archivos Terraform estaremos indicando un nuevo estado al que queremos llegar. En este caso, al aplicar terraform apply sí se desplegarán los cambios realizados en la configuración. Sin embargo, sólo se desplegarán los cambios, manteniendo intacta la configuración no modificada.

Estos son los pasos que se deben seguir para construir, mantener y eliminar una infraestructura con Terraform.

  1. Inicializar el directorio del proyecto Terraform (terraform init). El comando descarga todos los componentes necesarios, incluyendo módulos y plugins.

  2. Crear un plan de ejecución (terraform plan). El comando determina las acciones necesarias para alcanzar el estado deseado especificado en los archivos de configuración.

  3. Crear o modificar la infraestructura (terraform apply). Terraform es idempotente. Al usar este comando sólo se ejecutan los cambios que se hayan realizado en los archivos de configuración sin volver a crear lo que ya existe y no se ha modificado. Para esto se utilizan los archivos de estado.

  4. Mostrar las variables de salida de un despliegue (terraform output).

  5. Eliminar la infraestructura (terraform destroy). Se usa para eliminar la infraestructura creada.

Como lanzar terraform

Dentro de cada carpeta de ejemplos ejecuta:

$ terraform init
$ terraform apply

Tras unos instantes se mostrarán las IPs asignadas a las máquinas virtuales creadas y aprovisionadas.

El comandoterraform init  creará una carpeta .terraform con en plugin de OpenStack instalado y disponible para ser usado en el proyecto.

 

Ejemplos  para probar   todo esto que hemos visto  tanto en Open Stack como Google Cloud Platform se pueden encontar en  https://github.com/ualmtorres/terraform-examples

 

 

No se puede conectar con el servidor IIS Express


Es un problema recurrente a muchos desarrolladores de asp.net con visual studio 2020 ( o versiones anteriores : si intentamos iniciar nuestra aplicación .net core, recibimos este este mensaje «No se puede conectar con el servidor IIS Express» .

Es cierto que hay muchas publicaciones que afirman solucionar este problema, asi  que  pude que haya probado todos los métodos que sugieren y quizas ninguno funcione.

He aqui algunas de esas ideas

  • Si entramos en las propiedades del proyecto bajo depuración y cambiamos el puerto, entonces se conectará 1 vez. Entonces, si intentamos conectarnos de nuevo, nos dará el mismo error otra vez. Luego, puedo volver a cambiar el puerto al original y se cargará una vez, luego fallará más allá de eso, hasta que lo vuelva a cambiar. 
  • Las personas generalmente no tienen idea de cuáles son las configuraciones, por lo que no tienen una manera fácil de saber qué está pasando. Trate de usar Jexus Manager para ver qué pasa y luego la solución puede ser clara, jexusmanager.com/en/latest/tutorials/vs-diagnostics.html
  • Eliminar la carpeta oculta .vs en la carpeta raíz que puede que  resuelva el problema
  • No utilizar IISexpress, lo que puede  evite el problema.

Bien , si se analiza con calma el problema , es posible entender que el puerto que visual studio va a usar  para lanzar la aplicación web en el navegador  haya cambiado por alguna razón ( por ejemplo si ha copiado el directorio de la aplicación al completo) , y ese es el motivo por el  que debido a esa discordancias de los valores del puerto entre IIS y VS de ese error

¿Cómo lo resolvemos? pues siguiendo los mismos pasos que haríamos para   hacer accesible la aplicación desde una IP  y no desde localhost desde el propio equipo de desarrollo

Estos serian los pasos:

1. Averiguamos con qué dirección está visible nuestro equipo desde el exterior
Esto podemos hacerlo con cierta facilidad ejecutando el comando “ipconfig | find “IPv” ” en la terminal (cmd)  .

El número de resultados que veremos ahí dependerá de los adaptadores de red (físicos o virtuales) que tengamos configurados en nuestro equipo. De ellos tendremos que seleccionar la dirección que se encuentre en el rango de red usado por los equipos externos desde los cuales queremos acceder a nuestra web.

2. Localizamos el archivo de configuración de IIS Express del proyecto

Este archivo se llama “applicationhost.config” y en proyectos de Visual Studio se encuentra en una carpeta llamada “.vs\nombre de proyecto\config” que encontramos en el directorio  de la solución, en la subcarpeta del nombre del proyecto  y dentro de ella, en la subcarpeta “config”.

En otros casos, el archivo de configuración se puede  encontrar en la carpeta de configuración de IIS Express de vuestro usuario en el equipo: %userprofile%\documents\iisexpress\config.

3. Localizamos las líneas donde se especifica la URL por defecto del proyecto

En el archivo “applicationhost.config“, debemos localizar la parte de la configuración donde se indica la URL de acceso al proyecto en la máquina local. Por ejemplo, podría ser algo como esto:

<bindings>
<binding protocol=”http” bindingInformation=”*:53980:localhost” />
<binding protocol=”https” bindingInformation=”*:44342:localhost” />
</bindings>

 

Observe que este binding está limitando el acceso a vuestro sitio web, permitiendo únicamente el uso del host “localhost” para acceder al mismo. Para habilitar el acceso desde equipos externos, lo primero que tenemos que hacer es añadir otros bindings con el nombre de host que se utilizará desde fuera.

4. Añadimos a la configuración de IIS Express el nuevo binding con la dirección de nuestro equipo

En la sección de configuración <bindings>, añadimos una nueva línea en la que indicaremos que la aplicación también será accesible utilizando como host nuestra IP, de forma que quedaría más o menos como aparece a continuación.

 Ojo, ¡deberiamos elegir un puerto distinto al que usamos en localhost para que no haya conflictos !

Bien, pues si ahora intentamos ejecutar sin depuración sin permisos de administrador  nos aparecera el error de que no es posible iniciar IIS Express, pero no se preocupe pues este error aparece siempre que no hayamos lanzado Visual Studio como administrador, pues el nivel de permisos del proceso bajo el que se lanza IIS Express no es suficiente como para “apropiarse” de una dirección y puerto TCP/IP del equipo y utilizarla para escuchar peticiones.

En cambio, si iniciamos Visual Studio como administrador veremos que arranca correctamente y que, de hecho, podemos acceder a la aplicación utilizando tanto localhost:44342 como con permisos de administrador 192.168.1.46:44342, lo que quiere decir que, si no existen problemas de permisos, el binding está bien hecho.

 

5. Reservar la URL y conceder permisos de uso (sólo no administradores)

Como hemos comentado antes, este paso no será necesario si estamos ejecutando Visual Studio (y por tanto IIS Express) como administrador. Pero si no es así, debemos abrir una la línea de comandos con permisos elevados y utilizar la siguiente instrucción para reservar la URL y darle derechos de uso a determinados usuarios del equipo, por ejemplo como sigue desde la terminal de windows (cmd)  con permisos de administrador (no lo intente desde PowerShell porque le dara error) :

Pero antes de hacerlo tened en cuenta unos detalles:

  • Primero, la URL debe estar completa, incluida la barra del final.
  • El usuario puede ser cualquier grupo del sistema o nombre de usuario con dominio.
  • Los nombres de grupo son sensibles al idioma de instalación de Windows. Es decir, si vuestro Windows está instalado en inglés, debéis usar el nombre “everyone” en lugar de “todos”.

Tras ejecutar el comando, ya debería ser posible acceder a la aplicación desde el equipo utilizando tanto la URL interna (localhost) como la externa (192…), cada una con su puerto correspondiente.

Pero el acceso externo aún no está garantizado: el firewall impedirá el acceso a no ser que le indiquemos lo contrario.

6. Abrir el firewall

Por defecto, el firewall de Windows rechazará cualquier intento de acceso a la máquina desde el exterior, por lo que debemos configurar una regla de entrada que asegure que las peticiones hacia nuestra web podrán entrar sin que el firewall rechaze ese trafico.

Esto lo podemos hacer desde el interfaz grafico en configuración avanzada en reglas del Cortafuegos  o bien desde la  consola de comandos con permisos de administrador, ejecutando la siguiente orden :netsh advfirewall firewall add rule name=”Acceso externo a mi aplicacion web” dir=in action=allow protocol=TCP localport=44342

Por supuesto, recuerde que:

  • El parámetro localport debe ser el puerto que haya elegido para el acceso externo, el mismo que usamos en el archivo de configuración de IIS Express, y más adelante al reservar la URL.
  • Es conveniente poner un nombre reconocible a la regla, de forma que más adelante podamos identificarla con facilidad.

 

¡Y eso es todo! Si ha llegado hasta aquí, ya podrá ejecutar o depurar vuestra aplicación en Visual Studio, y acceder a ella desde cualquier equipo de la red local usando la dirección que hayas elegido en los pasos anteriores.