[Python-es] Conflicto python-exe

Ricardo Cárdenes ricardo.cardenes en gmail.com
Lun Oct 21 18:02:06 CEST 2013


Se me olvidaba: esto es asumiendo que tu codificación sea ISO-8859-1,
claro. Si estás usando Windows lo más probable es que la codificación
sea Windows-1252; en otros lo más normal es UTF-8. El problema es que
la codificación no es algo que puedas predecir a menos que tengas
previsto o bajo control las máquinas en las que se va a ejecutar tu
código. En cualquier caso, quizá prefieras poner esto en un fichero de
configuración o como opción a escoger en algún menú del programa.

Saludos,
Ricardo

2013/10/21 Ricardo Cárdenes <ricardo.cardenes en gmail.com>:
> En las líneas que te da el fallo:
>
>                (*)linea=unicode(linea)
>                (*)nombre=unicode(nombre)
>
> estás pidiéndole a Python que convierta "linea" y "nombre", que son
> cadenas normales (asumimos que esto es Python2.x, claro) en cadenas de
> tipo Unicode. Hay un problema aquí y es que claro, Python no sabe qué
> codificación tienen las cadenas originales y lo que hará es usar la
> codificación por defecto (que es lo que has modificado en el paquete
> "site").
>
> Pero lo puedes especificar:
>
>   CODIFICACION="iso-8859-1"
>   [...]
>                linea=unicode(linea, CODIFICACION)
>                nombre=unicode(nombre, CODIFICACION)
>   [...]
>
> haciendo eso debería de desaparecer el error.
>
>
>
> 2013/10/21 Fernando Garcia <riello57 en gmail.com>:
>> Cierto, he cambiado la configuración por defecto de Python, incluyendo en la
>> carpeta site.packages un archivo donde se cambia la codificación por defecto
>> de asciia iso-8859-1. Es la única manera que conozco de que el programa me
>> admita incluir acentos en las búsquedas. Si conoces alguna otra forma, por
>> favor indícamelo y de esa forma podré restituir la configuración a su estado
>> inicial, sin merma de su eficacia. Gracias
>>
>>
>> El 21 de octubre de 2013 10:53, Ricardo Cárdenes
>> <ricardo.cardenes en gmail.com> escribió:
>>
>>> El mensaje concreto que indicas es clásico, no de los .EXE en sí, sino
>>> de la configuración de Python. Si te dice que blahblah es un ordinal
>>> que no está en ASCII al convertirlo en .EXE, pero no al ejecutarlo en
>>> tu Python normal, es bastante probable que hayas modificado el site.py
>>> de tu máquina para que la codificación por defecto sea otra que no la
>>> ASCII. Y también muy probable que al construir el .EXE, éste no se
>>> lleve una copia de tu site.py (lógico, por otra parte), así que ese
>>> cambio no queda reflejado.
>>>
>>> Si ése es el caso, hay dos maneras de corregirlo: la complicada pero
>>> *recomendada*, que es poner tu site.py de vuelta como estaba y
>>> corregir el programa para que funcione correctamente en cualquier
>>> entorno. La sencilla pero *chapuza* es buscar la manera (no la
>>> conozco) de que el site.py (o equivalente) que va en el .EXE vaya
>>> modificado... o cambiarlo al vuelo al arrancar el programa, pero creo
>>> que para ese momento ya es tarde.
>>>
>>> Saludos,
>>> Ricardo
>>>
>>> 2013/10/20 Guillermo Vaya <nadaird en gmail.com>:
>>> > Creo que sería más fácil ayudarte si pegas el trozo de código donde se
>>> > genera el error (Con la cantidad suficiente como para poder ver donde
>>> > inicializas cosas y tal) o un ejemplo pequeño que reproduzca el mismo
>>> > error.
>>> > Te recomiendo usar algún tipo de pastebin, para facilitar la lectura de
>>> > código.
>>> >
>>> > Además, deberías pegar el error concreto, que no cuesta mucho y da más
>>> > información.
>>> >
>>> > Un saludo
>>> >
>>> >
>>> > 2013/10/20 Fernando Garcia <riello57 en gmail.com>
>>> >>
>>> >> Estoy escribiendo una aplicación para gestionar una base de datos con
>>> >> el
>>> >> personal de una empresa.
>>> >> Para conseguir que la búsqueda en la bd sea indiferente a mayúsculas y
>>> >> acentos (lo que se llama normalizar texto, vamos) debo convertir cada
>>> >> linea
>>> >> de string a unicode. Haciéndolo así, la aplicación funciona
>>> >> correctamente,
>>> >> ningún problema... siempre que se ejecute desde el código fuente. Desde
>>> >> el
>>> >> intérprete de python, vamos.
>>> >> Pero cuando convierto la aplicación a un ejecutable .exe para su
>>> >> distribución, me da un error, localizado en la linea donde convierto la
>>> >> bd a
>>> >> unicode: el típico ordinal not i  range, etc, etc...
>>> >> ¿Alguien sabe porqué ocurre esto y como se puede solucionar?
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> Python-es mailing list
>>> >> Python-es en python.org
>>> >> https://mail.python.org/mailman/listinfo/python-es
>>> >> FAQ: http://python-es-faq.wikidot.com/
>>> >>
>>> >
>>> >
>>> > _______________________________________________
>>> > Python-es mailing list
>>> > Python-es en python.org
>>> > https://mail.python.org/mailman/listinfo/python-es
>>> > FAQ: http://python-es-faq.wikidot.com/
>>> >
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>


Más información sobre la lista de distribución Python-es