[Python-es] (Iron)Python en Visual Studio 2008

Olemis Lang olemis en gmail.com
Mar Ene 19 20:37:21 CET 2010


Buenas a todos. Como es mi primer mensaje me presento muy brevemente.
Como pueden mi nombre es Olemis Lang, y en el marco de Python y el
FOSS desarrollo proyectos como dutest (doctest + unittest) [1]_ ,
otros en el ámbito de Trac e.g. TracGviz [2]_ [3]_ y más recientemente
contribuyo con el plugin TracXmlRpc [4]_ , más otros. Estoy algo
activo en varias otras listas especialmente Testing in Python, Trac
Users, wxPython users, Python AFUL , Strasbourg Linux User Group
(SLUG.fr). Escribo un curso de Python para la revista TuxInfo (.AR) y
bueno, todo lo que diga después de esto atenta contra el «muy
brevemente» q dije al principio ...

;o)

2010/1/19 lasizoillo <lasizoillo en gmail.com>:
> Ya te contestan temas relacionados con .Net, voy a tratar de comentar
> yo alguno más genérico de python.
>
> El día 19 de enero de 2010 17:56, Vicent <vginer en gmail.com> escribió:
>
>> Por otro lado, se suele decir que el código C/C++ se ejecuta más rápido que
>> el Python porque el primero es compliado y el segundo es interpretado.
>> Mi primera duda es genérica, y está relacionada con la afirmación anterior:
>> si al final creamos un ejecutable a partir de código escrito en Python, ¿no
>> es ya algo compilado y que va a correr "suficientemente rápido"? Esto nunca
>> lo he acabado de entender, porque no conozco a fondo la teoría que hay
>> detrás; "funciono" a base de intuición.
>
> C++ tiene tipado estático y python dinámico. Esto quiere decir que una
> variable de C++ se sabe que va a contener en tiempo de compilación,
> cosa que no se puede hacer con python. Esto permite hacer muchas
> optimizaciones al compilador de C++ que no se pueden hacer en un
> compilador de python. Normalmente, cuando se compila un programa de
> python, lo que se hace es meter el interprete o maquina virtual en un
> ejecutable, junto con el código de python a interpretar. Eso quiere
> decir que lo normal es que compilando el python no ganes velocidad.
>

... a no ser q desee calcular 100000 ! (factorial de 100,000)

:P

>> Por cierto, ¿qué herramientas —si las hay— son las "estándar" para generar
>> ejecutables (programas que puedes distribuir a otras personas, que se pueden
>> instalar, etc.) a partir de código Python?
>
> Para windowseros:
> http://www.py2exe.org/
>

q se puede relacionar con InnoSetup para hacer instaladores (hay un
video muy bueno -en inglés- acerca de esto en PyCon'09)

>> En particular, y volviendo al tema de IronPython y MS Visual Studio 2008, la
>> verdad es que se me han abierto los ojos cuando he leído el texto que os
>> referenciaba arriba, porque ahora mismo (por cosas de la vida) estoy
>> programando en C++ dentro de Visual Studio 2008, y me preguntaba si podría
>> "pasar del C" y "pasarme a Python" sin perder "nada".

Hay varias formas de migrar código de otras plataformas hacia Python o
de ejecutar scripts de Py en aplicaciones para estos otros lenguajes y
los ejemplos son tan «raros» como Fortran o Ruby. Me vienen a la mente
SWIG, PythonC y hay otros más [5]_

>> Dejando de lado que he
>> encontrado unas librerías externas en C que me hacen falta y que no sé
>> todavía si estarían en Python, ¿podría generar ejecutables igual de rápidos,
>> eficientes, etc. que ahora mismo con C++ si usase IronPython en Visual
>> Studio 2008? Además, por lo que entiendo, Visual Studio te facilita bastante
>> la vida con todo el tema de las ventanitas, etc., de cara a crear una
>> interfaz gráfica. ¿O no?
>
> No conozco mucho de interfaces gráficas y menos de windows, pero
> puedes usar toolkits multiplataforma en python. Tk (viene con las
> baterías de python), WxWindows, Qt y Gtk son los más conocidos.
>

Yo utilizo wxPython y viene con algo que se llama PyCrust q sirve para
prototipar una interfaz de usuario en tiempo real(también trae un
Designer ...) y en general está bastante bueno y usa las interfaces
nativas del SO (GDI para Win32, Cocoa para MacOS, GTK para Linux y
otros *nix-, ...)

Viene con demos ;o)

> QtCreator viene integrado con C++, pero creo que se puede usar también
> para diseñar la interfaz de usuario y luego usarla con código python.
>

La interfaz se salva a un fichero de recursos (XML, ...)

Por otra parte se puede tener acceso a todo lo que trae el .NET (y no
hace falta IronPython ;o) directamente desde Python, por lo que se
podría hacer prácticamente todo lo que se hace en el .NET

:o)

>> Incluso, entiendo que no tendría por qué "pasar del C", y que dentro de
>> Visual Studio incluso quizás pueda ser más fácil la integración de las
>> librerías escritas en C que comentaba arriba en mi código Python. ¿No?
>> Perdón por el rollo y por si estoy escribiendo muchas animaladas. Espero que
>> podáis darme algo de orientación...
>
> Puedes usar python en un programa de c o c++:
> http://www.python.org/doc/2.5.2/ext/embedding.html
>
> O puedes ejecutar codigo nativo desde python de multiples formas:
> http://www.python.org/doc/2.5.2/ext/intro.html
> http://www.boost.org/doc/libs/1_41_0/libs/python/doc/index.html
> http://www.cython.org/
> http://docs.python.org/library/ctypes.html
>

Y hay más [5]_
:o)

O puedes usar objetos COM o implementar servicios y otras techs de
Win32 con el paquete PyWin32 cuyo autor es Mark Hammond ;o)

> solo decirte que
> puedes saltar a python de cabeza o sumergirte poco a poco. Eso ya tu
> mismo ;-)
>

... o deslizarte, como una serpiente ...

;o)

.. [1] dutest
        (http://pypi.python.org/pypi/dutest)

.. [2] TracGViz
        (https://opensvn.csie.org/traccgi/swlcu/wiki/En/Devel/TracGViz)

.. [3] TracGViz @ PyPI
        (http://pypi.python.org/pypi/TracGViz/1.3.4)

.. [4] TracXmlRpc patch queue repository (MQ)
        (http://bitbucket.org/osimons/trac-rpc-mq/)

.. [5] TuxInfo #21
        (http://infosertec.loquefaltaba.com/tuxinfo21.pdf)

-- 
Regards,

Olemis.

Blog ES: http://simelo-es.blogspot.com/
Blog EN: http://simelo-en.blogspot.com/

Featured article:
Added CHANGES.txt. Needed to execute `setup.py`.  -
http://flioops.hg.sourceforge.net/hgweb/flioops/dutest/rev/4e166ba04631



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