[Python-es] (Iron)Python en Visual Studio 2008
Luis Miguel Morillas
morillas en gmail.com
Mar Ene 19 23:17:44 CET 2010
El día 19 de enero de 2010 20:37, Olemis Lang <olemis en gmail.com> escribió:
> 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
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
Por defecto no está ironpython no está integrado en VS 2008 (ni en VS
2010) Hay varias intentonas, pero hay que reprogramar bastante de VS
para dar soporte a lenguajes dinámicos (reflection).
Te dejo un par de links que te pueden ayudar. [1] [2]
[1] http://ironpython-urls.blogspot.com/2009/06/python-support-in-visual-studio.html
[2] http://ironpython-urls.blogspot.com/2009/11/good-mix-30-visual-studio-2010-devdays.html
Saludos,
--
Luis Miguel
Más información sobre la lista de distribución Python-es