jueves, 12 de octubre de 2017

Python 34 en Windows 10

Hola a todos, parto esta entrada contándoles por qué motivos estoy escribiendo de un problema de Python en un entorno Windows 10. No sé si les había comentado o no, pero en la empresa en la que trabajo (al menos en mi área), utilizamos principalmente el entorno de Microsoft. Para hacer unos análisis de minería de datos instalamos un IDE que se llama Orange y que está basado en Python. Al instalar este programa, viene de "regalo" la instalación de Python 3.x, sin embargo hay varias características para las que se requiere que se instalen módulos o bibliotecas de Python independientes (como los controladores para acceder a bases de datos).

Ahí es cuando inicia esta historia, ya que quería conectar una base de datos mysql/postgre a Orange y el "conector" no venía instalado, así que me vi en la obligación de tener que instalarlo. Creo que de haber sido Linux, no habría tenido tantos problemas instalando/encontrado la solución (ya que aún no resuelvo cómo hacer que Orange reconozca el conector que instalé).

Para partir, tuve que instalar pip, que fue lo menos terrible de todo, pero para ello tuve que setear una Variable de Entorno de Windows 10. Con lo anterior pude utilizar Python (y luego pip) desde la PowerShell de Windows, ya que al instalar Orange, éste no la seteó la variable. En la imagen a continuación se pueden ver las 2 variables de Entorno que tuve que incluir: PYTHON_HOME y PYTHONPATH.


PYTHON_HOME tiene el directorio donde se instaló python (en mi caso C:\Python34), PYTHONPATH aparte de tener el directorio donde está instalado python, tiene los directorios dónde están las dlls, algunos paquetes internos, scripts, entre otras cosas.

Luego de realizar lo anterior y de descargar get_pip.py desde https://pip.pypa.io/en/stable/installing/ , se ejecuta el siguiente comando desde el powershell y en el directorio donde quedó el archivo descargado (lo del directorio es importante, o dará error):

python get-pip.py

Luego de pasar esa etapa, podremos utilizar pip para instalar algunos programas. Otros (como el que tenía que instalar yo), no son tan simples, ya que me encontré con el siguiente mensaje de error:

Error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat)

De todos los foros que visité, y después de instalar varias versiones de VisualStudio, la única que no lanzaba el error indicado, fue Microsoft Visual Studio 10, la cual pueden descargarla de la página de Microsoft link acá. Para poder acceder, tendrán que tener (o crearse) una cuenta, con la cual podrán descargar algunas versiones gratis (yo descargué Visual Studio 2010 Express).

Una vez instalado, busquen el path donde se instaló y ya que deberán crear una variable de entorno para que pip pueda encontrar el archivo vcvarsall.bat. En mi caso, el nombre de la variable es VS100COMNTOOLS, y el contenido es C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools

Como advertencia, tengo instalada la versión de python 3.4, por toda la documentación que leí, para versión 2.7 de python, deben setear otra variable VS90COMNTOOLS, les dejo el link de referencia acá, en inglés.

Luego de lo anterior, por fin logré instalar el paquete que solicitaba Orange psycopg2 utilizando el comando pip. Claro que este logro fue empañado por el hecho de que Orange aún no reconoce el módulo instalado y a la fecha (11/10/2017), no he logrado dar con la solución.

De momento dejaré esta entrada en este punto, para evitar escribir algo que mi memoria ya deje estar seguro de cómo se resolvió el problema. En cuanto haya resuelto el problema planteado, actualizaré esta entrada.

Si alguien ya logró resolverlo, por favor le solicito dejar un mensaje por acá para compartirlo con el universo (o al menos conmigo, ya que se lo agradeceré).

Espero que les haya servido y estamos al habla.

Javiera

martes, 27 de junio de 2017

Érase una vez Ubuntu

Y después de casi un año sin publicar una nueva entrada, vengo a contribuir con otro tutorial/ayuda memoria, para la posteridad.
Y el título de la publicación de hoy lo dice todo (realmente no, pero quise darle un poco de emoción infantil a esta entrada).

Pero para que se entienda todo, iniciaré con los hechos que hace aproximadamente 1 semana y media atrás (creo....). Todo inició hace 2 viernes, el día que hubo temporal y se cortó la luz en varias comunas de esta "gran" ciudad. Para fortuna mía, en mi casa no se cortó, pero..... sí hubo baja de tensión.

Lo anterior no habría sido problema si mi notebook hubiese tenido buena la batería (hace un tiempo me contacté con el proveedor para ver si se podía arreglar por software, pero después de todas las pruebas que me pidió que realizara, me recomendó ir al servicio técnico, cosa que hasta la fecha no he realizado). En fin, volviendo a la semana pasada, estaba yo con mi pc actualizando la versión de ubuntu que tenía instalada y viene la baja de tensión, y bueno, cuando estaba instalando todos los nuevos paquetes que ya había descargado, pues se pegó el computador y no hubo caso que respondiera, así que tuve que forzar su reinicio, y para ir directo al grano, Ubuntu murió.

En tales circunstancias, no me quedó otra que usar mi Pendrive (también conocida como memoria USB), y usarla para recuperar mis archivos usando una distribución de linux en modo "Live". Todo bien hasta ahí, debería ser tarea sencilla, ya que ya había instalado Ubuntu en este pc, pero se puso chúcaro el amigo, y por más que traté de que mi BIOS booteara usando el pendrive, no quiso.

Como por el método "fácil" no pude iniciar desde el pendrive, no me quedó otra que utilizar mi buen amigo GRUB2, que quedó heredado de la instalación de ubuntu (nunca debí instalar ese SO en primer lugar, pero bueno, que quede de enseñanza).

Buceando en las profundidades de la red, Google me recomendó algunas páginas (todas en inglés), para poder bootear desde el pendrive usando GRUB2, pero de todas ellas, la que me fue de mayor utilidad es la siguiente:

http://blog.viktorpetersson.com/post/93191892924/how-to-boot-from-usb-with-grub2

El manual que él describe es muy completo y util, sólo tuve que adaptar lo que él menciona para ajustar a mi sistema, así que dejaré las instrucciones que él dejo traducidas, por si a alguien le siven.

ADVERTENCIA, el método que describiré en el texto más abajo permite bootear desde la memoria USB, pero entra en la etapa de instalación de la distribución de linux que se está usando para recuperar la partición. Imagino que debe existir una forma de entrar en modo LIVE, pero yo no seguí investigando al respecto cómo hacerlo, por lo que terminé borrando la partición de Ubuntu e instalé Debian.

En mi caso particular,  yo tenía en mi pendrive la distribución Debian 8.8 y GRUB2 como gestor de arranque.

Encendí el computador y al entrar a grub2 presioné el botón Esc para acceder a la consola (de acuerdo con el autor del artículo que cité, también se puede entrar presionando la tecla c).

Ya en la consola se debe ejecutar el comando "ls", de manera tal de que grub2 nos indique qué discos y particiones tenemos:

grub>ls

La respuesta debería ser algo como lo siguiente:

(hd0) (hd0,gpt7) (hd0,gpt6) (hd0,gpt5) (hd1) (hd1,msdos1)

Donde (hd0) es el disco de mi computador, y cada gpt es una partición del disco. (hd1) corresponde al pendrive y msdos1 es la partición del pendrive.

A continuación los comandos a utilizar en grub para que bootee la instalación que se encuentra en el USB:

grub>linux (hd1,msdos1)/install/vmlinuz root=/dev/sdb1
grub>initrd (hd1,msdos1)/install/initrd.gz
 
Antes de ejecutar el último comando, fijense de que no les haya respondido con algún error, porque de ser así, al bootear no dará resultado. Si por todo se ejecutó a la perfección, deberían ejecutar el último comando, para bootear:

grub>boot

Después de eso, deberían ver la pantalla de instalación del sistema operativo que tengan preparado en la memoria usb, y continuar con el proceso de instalación, que en mi caso fue eliminar Ubuntu y volver a Debian.

Éxito a los que llegaron por acá buscando un granito de ayuda.
Saludos y espero escribir pronto....
Javiera