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

viernes, 8 de julio de 2016

Un Nuevo Comienzo

Buenas gente (dudo que quede alguien que siga este blog). Hoy publiqué una entrada que la tenía desde el 2007 como borrador. Creo que en ese entonces quería escribir más, pero al final no lo hice y ya no recuerdo de que iba. En fin, esta entrada, que es la segunda el día de hoy, es porque he estado "jugando" con mis Raspberry's Pi (sí, mis porque tengo 2).

Todo comenzó porque hace unos años le compré una a un amigo de la universidad Alam (saludos si es que lees esto). Nunca hice nada con ella hasta hace unos meses que le pedí a los chinos que me enviaran un pantalla touch. Para mi decepción no era compatible con la versión que yo tenía (Raspberry Pi B), así que me compraron en los Estados Unidos de Norteamérica la última versión (que sí era compatible). La triste verdad es que sí era compatible, sólo que no la había alimentado con la potencia suficiente. Más abajo dejo más detalles.

Después de horas de diversión, que realmente fueron horas en las que me quebré la cabeza tratando de hacer funcionar la dichosa pantalla con la RPi v3, pude lograrlo, pero como sé que por algún motivo u otro puede que meta la pata y termine "rompiendo" la configuración y deba reinstalar todo, voy a dejarme un "ayuda memoria" o "torpedo" para la próxima ocasión.

Les comento que la pantalla que tengo es la Waveshare de 3,5 pulgadas. El fabricante tiene una wiki para instalar el driver (aunque está en inglés), la dejo por acá como referencia.

Quiero explicar muy resumido lo que hice y voy a asumir que hay algunas cosas que ya están listas, como por ejemplo que cuentan con una Raspberry Pi, la RPi tiene Raspbian instalado y que se tienen los permisos necesarios para escribir en el disco donde está el SO instalado, si necesitas llegar a esa parte puede solicitar ayuda dejando algún comentario acá o revisando la página de Raspberry.org. Veré si estos días actualizo la página de contacto con más datos para ubicarme.

Instalando el Driver de Waveshare
En la página del fabricante recomiendan que cuando uno tiene conectado la RPi con la pantalla, la alimentación debe ser capaz de proveer la suficiente corriente para el funcionamiento de la raspberry y el de la pantalla, de lo contrario no se verá nada en ésta. Por ese motivo (y en la página también lo mencionan), debemos procurar alimentarla con 5V/2A, yo perdí mucho tiempo por no hacerle caso a esta advertencia (que estaba en rojo y en negrita....).

Una vez encendida la Raspberry y logueada en el entorno de consola (o también conocido como pantalla negra con letras blancas donde se ve puro texto y nada de entorno gráfico), procedí a descargar el driver desde internet (así que aparte de estar encendida, ésta debe contar con una conexión a internet, yo utilicé el cable ethernet que está conectado a mi router). Para descargar el driver primero hice una carpeta y dentro de esa carpeta descargué el archivo, tal como dejo a continuación:

mkdir LCD_Driver
cd LCD_Driver
wget http://www.waveshare.com/w/upload/2/24/LCD-show-160520.tar.gz

Con esos comandos se creará la carpeta LCD_Driver, luego se ingresará a ella y por último se descargará el driver que es compatible con la última versión de Raspbian Jessy que corresponde al release lanzado después del 10 de Mayo de 2016. Si vuestra versión de Raspbian es previa a esa fecha deberán ejecutar el siguiente comando (espero que estos links sigan operativos en el futuro):

wget http://www.waveshare.com/w/upload/3/37/LCD-show-151102.tar.gz

Una vez que el archivo fue descargado, debemos proceder a descomprimirlo, para lo cual ejecutamos el siguiente comando (recordar que estoy utilizando el driver para la versión más reciente de raspbian):

tar xvf LCD-show-160520.tar.gz

Luego de descomprimir el archivo entramos al directorio creado y ejecutamos el comando correspondiente a las pulgadas de la pantalla que poseemos (este driver sirve para varios tamaños de pantallas: 3,2 pulgadas; 3,5 pulgadas; 4 pulgadas y 5 pulgadas).

cd LCD-show
sudo ./LCD35-show

Después de ejecutar este comando, la raspberry se reiniciará (si se demora un poco es normal, puede tardar varios minutos en reiniciarse, así que a armarse de paciencia) y cuando parta nuevamente deberíamos poder utilizar la pantalla.

En el caso hipotético que necesitemos volver a utilizar la pantalla HDMI, entramos a la carpeta LCD-show y ejecutar el comando para activar el hdmi:

sudo ./LCD-hdmi

Al igual que con el comando previo, debería tardar unos minutos y al resetear iniciaría en la pantalla hdmi conectada. Espero en el siguiente post poner los detalles de la configuración del entorno gráfico, que hartos dolores de cabeza me dio para poder instalar, pero para no dejar tan extenso este post (y evitar que se aburran leyendo), lo dejaré para más adelante.

Estamos al habla estos días.
Javiera