Tengo un módulo de Python con nada más que funciones globales regulares. Necesito llamarlo desde otro entorno de scripting de dominio de negocios que solo puede invocar DLL de C. ¿Hay alguna forma de construir mis módulos Python para que a otro código pueda llamarse como una función C estándar que se exporta desde una DLL? Esto es para un entorno de Windows. Soy consciente de IronPython, pero hasta donde yo sé, solo puede construir Assemblies .NET, que no se pueden llamar como funciones de C DLL.¿Hay alguna manera de construir una DLL tipo C desde un módulo de Python?
7
A
Respuesta
6
Eche un vistazo a this artículo de CodeProject. Una forma sería envolver sus funciones de python en un dll C y exponer esto al callee.
COM es un protocolo binario para resolver este problema. Pero tendrá que ajustar este dll de python en un contenedor COM. Y agrega un código en el lado de la llamada también.
3
La solución estándar es incrustar el intérprete de Python (que ya es una DLL C) en su aplicación.
https://docs.python.org/extending/windows.html#using-dlls-in-practice
2
py2exe puede generar archivos DLL COM desde código Python, mediante la compilación y la incrustación de código Python + intérprete. No es así, AFAIK, admite DLL regulares todavía. Para eso, consulte la respuesta de dirkgently sobre la incrustación de python usted mismo.
Cuestiones relacionadas
- 1. ¿Hay alguna manera de construir implícitamente un tipo en C#?
- 2. ¿hay alguna manera de ver el origen de un módulo desde la consola de python?
- 3. Cómo construir una extensión de Python C para poder importarla desde un módulo
- 4. ¿Hay alguna manera más pitónica de construir este diccionario?
- 5. ¿Hay alguna manera de llegar a un miembro `protected` de otro objeto desde un tipo derivado?
- 6. ¿Hay alguna manera de ver la lista de funciones en un módulo, en GHCI?
- 7. ¿Hay alguna manera de que un módulo kernel encuentre direcciones de sección de otro módulo cargado?
- 8. ¿Hay alguna manera de restringir un parámetro de tipo genérico a un tipo anónimo?
- 9. ¿Hay alguna manera de empaquetar más de un ensamblado .NET en un dll?
- 10. Python ctypes: cargando DLL desde una ruta relativa
- 11. Python/Matplotlib - ¿Hay alguna manera de hacer un eje discontinuo?
- 12. ¿Hay alguna manera de identificar un método heredado en Python?
- 13. ¿Hay alguna manera de desactivar una etiqueta?
- 14. ¿Hay alguna manera de crear complementos de Eclipse con Python?
- 15. ¿Hay alguna manera de volcar una C struct?
- 16. ¿Hay alguna manera de hacer este tipo de conversión en un predicado C#
- 17. ¿Hay alguna manera de especificar una expresión lambda C# "vacía"?
- 18. ¿Hay alguna manera de revertir una cripta() en c?
- 19. ¿Hay alguna manera de hacer una función atómica en C? .
- 20. ¿Hay alguna manera de usar orderby en un forloop C#?
- 21. ¿Hay alguna manera de editar un pdf con C#?
- 22. ¿Hay alguna manera de romper un ciclo superordenado en C?
- 23. cómo acceder a una clase desde un dll en python?
- 24. ¿Hay alguna manera de "limpiar" una superficie?
- 25. ¿Hay alguna manera de pausar una CABasicAnimation?
- 26. ¿Hay alguna manera de acceder al hardware directamente en Python?
- 27. ¿Hay alguna manera de leer desde un sitio web, una línea a la vez?
- 28. Dado un módulo en pypi, ¿hay alguna manera de introspectar el módulo y mostrar todas las dependencias?
- 29. Llamar a un módulo de Python desde Perl
- 30. ¿Hay alguna manera de negar un predicado?
+1: la forma más sencilla – jfs