Archivo

Entradas Etiquetadas ‘python’

Opencv: Usando la nueva interfaz de python

Domingo, 15 de agosto de 2010 4 comentarios

Ya os he hablado en alguna ocasión de la librería OpenCV con las que suelo trabajar. Con C/C++ nunca he tenido problemas para usarla ya que más o menos me manejo con estos lenguajes y el compilador gcc en GNU/Linux, pero al intentar probar la interfaz de programación de las OpenCV con python me encontré con el problema de que python no encontraba el módulo necesario (cv). El error que me aparecía en la consola al intentar importar el módulo era el siguiente: Leer más…

GD Star Rating
loading...
Share
Categories: Programación Tags: ,

Python: /bin/sh: Syntax error: Bad fd number

Martes, 22 de junio de 2010 3 comentarios

Editado/Edited: 25/06/10

Estoy probando unos scripts en Python que me han pasado (y que han sido desarrollados sobre Debian) y he tenido problemas a la hora de ejecutarlos. Cuando intentaba ejecutar estos scripts en mi ordenador me lanzaban el siguiente mensaje de error, entre otros:

/bin/sh: Syntax error: Bad fd number

El problema se encuentra en las llamadas que se hacen en el script a os.system() para ejecutar algunos comandos de consola. Como ya he dicho, los scripts han sido desarrollados sobre una plataforma Debian, pero en mi distribución Ubuntu no han funcionado. Esto se debe a que en ubuntu por defecto los comandos se ejecutan por sh y no por bash.

La solución que he visto ya propuesta en varios sitios es eliminar el comando sh de su sitio y hacer un enlace simbólico desde el comando bash a sh. Es una forma un poco bestia de hacerlo … pero no he visto ninguna otra solución. Si alguien conoce una forma más elegante de hacer esto que lo comente por favor.

sudo mv /bin/sh /bin/sh.bak
sudo ln -s /bin/bash /bin/sh

Visto aquí.

Otra solución mejor

En vez de tener que hacer este enlace simbólico mediante el módulo subprocess podemos especificar que terminar queremos usar mediante la opción executable. A continuación os dejo un método que me he creado para hacer llamadas a programas por la terminal usando /bin/bash en vez de la terminal por defecto (/bin/sh en ubuntu)

def run_shell_program (cmd):
  try:
    retcode = subprocess.call(cmd, shell=True, executable=&quot;/bin/bash&quot <img src='http://plagatux.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
    if retcode != 0:
      print &gt;&gt; sys.stderr, &quot;Error executing command: %s&quot; % cmd,\
      &quot;(return code: %s)&quot; % retcode
  except OSError, e:
    print &gt;&gt;sys.stderr, &quot;Execution failed: %s&quot; % cmd, e

See this page.

A better solution

Instead of making the symbolic link explained in the above post we can use the subprocess module in python in order to specify the shell executable we want to use. The next method written in python is used to run shell command using /bin/bash instead of the default shell command (/bin/sh in Ubuntu)

def run_shell_program (cmd):
  try:
    retcode = subprocess.call(cmd, shell=True, executable=&quot;/bin/bash&quot <img src='http://plagatux.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
    if retcode != 0:
      print &gt;&gt; sys.stderr, &quot;Error executing command: %s&quot; % cmd,\
      &quot;(return code: %s)&quot; % retcode
  except OSError, e:
    print &gt;&gt;sys.stderr, &quot;Execution failed: %s&quot; % cmd, e
GD Star Rating
loading...
Share

Nuevo lenguaje de programación de Google: GO

Jueves, 12 de noviembre de 2009 Sin comentarios

Por medio de Noticias3D, me entero de que google está desarrollando un lenguaje de programación que según ellos va a ser la leche. Todas estas noticias sobre apariciones de nuevos lenguajes de programación hay que cogerlas siempre con pinzas ya que todos prometen una panacea donde el código binario resultante se ejecuta tan rápido como las aplicaciones en C/C++ pero con la facilidad de programación de otros lenguajes de scripting como python. En fin, cuando tenga tiempo intentaré realizar unos pequeños benchmarks a ver si esto que prometen es cierto. Podéis encontrar más información en la página oficial del proyecto.

Pdta: El logo del lenguaje es un puntazo jeje  :mouse:

GD Star Rating
loading...
Share

Desinstalar aplicaciones python

Sábado, 10 de octubre de 2009 1 comentario

python-logo

La mayoría de aplicaciones escritas en python cuentan con un archivo setup.py que nos permite realizar la instalación de la aplicación. Para realizar esta instalación basta con ejecutar el comando:

python setup.py install

con permisos de root. Sin embargo no contamos con una opción para desinstalar estos programas que instalamos, y si queremos hacerlo tenemos que buscar los archivos manualmente. En esta página me he encontrado un truco bastante curioso para automatizar este proceso de desinstalación. Primero realizamos la instalación con una opción que nos permite generar un fichero donde se incluyen todos los ficheros que se han copiado en diversos directorios:

python setup.py install –record files.txt

Después podemos borrar dichos ficheros con este comando

cat files.txt | xargs rm -rf

Sin embargo uno de los comentarios en dicha página advierte que hay que asegurarse de que en la lista de ficheros no se incluya ningún directorio importante para no borrarlo sin querer. Por ejemplo si nos encontramos con algo cómo:

/usr/share/doc/

a palo seco (sin especificar ningún archivo detrás de la última barra), si ejecutamos el comando anterior se nos borrará toda la documentación de los programas que tenemos instalados.

GD Star Rating
loading...
Share

pygtranslator – Traductor de google para tu escritorio

Viernes, 9 de octubre de 2009 Sin comentarios

googleTranslate

Por medio de glatelier me entero de la existencia de pygtranslator , un programa para poder acceder a google translate desde tu escritorio, pero solo nos dan el enlace a getdeb (debian | ubuntu). El granito de arena que yo aporto es este, donde encontramos la página oficial del proyecto que se mantiene mediante GIT para poder instalar la aplicación en cualquier otra distribución. Si queremos bajarnos la última versión no tenemos más que ejecutar este comando:

git clone git://github.com/xrado/pygtranslator.git

Y si queremos ver si hay actualizaciones en el futuro, ejecutaremos el siguiente comando dentro del directorio:

git pull

Ah! para instalar una aplicación python, para aquellos que no lo sepan:

sudo python setup.py install
GD Star Rating
loading...
Share