Tengo un servidor remoto de confianza que almacena muchos módulos de Python personalizado. Puedo buscarlos a través de HTTP (por ejemplo, usando urllib2.urlopen
) como texto/simple, pero no puedo guardar el código del módulo obtenido en el disco duro local. ¿Cómo puedo importar el código como un módulo de Python totalmente operativo, incluidas sus variables globales e importaciones?
supongo que tengo que usar una combinación de exec
y imp
funciones del módulo, pero he sido incapaz de hacerlo aún funciona.dinámicamente importar módulo de Python
Respuesta
Parece que este debe hacer el truco: importing a dynamically generated module
>>> import imp >>> foo = imp.new_module("foo") >>> foo_code = """ ... class Foo: ... pass ... """ >>> exec foo_code in foo.__dict__ >>> foo.Foo.__module__ 'foo' >>>
También, como se sugiere en el artículo ActiveState, es posible que desee agregar su nuevo módulo de sys.modules
:
>>> import sys >>> sys.modules["foo"] = foo >>> from foo import Foo <class 'Foo' …> >>>
Bien, me he estado preguntando sobre esto por un tiempo. – intuited
¿Hay algún truco para que yo pueda permitir al usuario "desde foo importar Foo"? En este ejemplo, obtengo "ImportError: ningún módulo llamado foo". –
Ver mi respuesta actualizada. –
Aquí hay algo Hace un tiempo marqué un marcador que cubre algo similar:
Es un poco más allá de lo que desea, pero la idea básica está ahí.
- 1. Cómo des-importar un módulo de Python?
- 2. problemas al importar el módulo python
- 3. Boost Python: Problemas para importar un módulo
- 4. Importación de todo (*) dinámicamente desde un módulo
- 5. Importar módulo de la subcarpeta
- 6. Importar módulo de mapeo en Python para una fácil refactorización
- 7. ¿Importar un módulo basado en la versión de python instalada?
- 8. Importar el módulo de python NO en la ruta
- 9. __package__ es Ninguno al importar un módulo de Python
- 10. añadir dinámicamente las funciones de un módulo de Python
- 11. ImportError al intentar importar un módulo personalizado en Python
- 12. Buscar la ruta del módulo sin importar en Python
- 13. Python 3.2: no se puede importar el módulo del sqlite3
- 14. Importar un módulo python sin la extensión .py
- 15. Problema al importar 'tiempo' como un módulo en python
- 16. Python: no se puede importar el módulo urandom (OS X)
- 17. Python importar un módulo en una clase única
- 18. Importar un módulo en Python solo si no existe
- 19. Cómo importar un módulo en Python con importlib.import_module
- 20. Importar un módulo Python en una plantilla Jinja?
- 21. Cómo importar el módulo python desde el archivo .so?
- 22. ¿Cómo puedo importar el módulo sqlite3 en Python 2.4?
- 23. Python - importar en if
- 24. ¿Cómo puedo importar una función de módulo python de forma dinámica?
- 25. Pythonanywhere instalar e importar el nuevo módulo
- 26. Python importar
- 27. cómo importar matplotlib en python
- 28. ¿Cómo importar un módulo como __main__?
- 29. Importar nuevo módulo Maven en Eclipse automáticamente
- 30. Python: importar el paquete que contiene
se les descarga a través de SSL o está cada router intermedias de confianza así? : P – aaronasterling
En realidad, sí, tanto el módulo de almacenamiento como el servidor de aplicaciones para el usuario son partes de un único sistema (e incluso se encuentran en la misma sala de servidores). Por ahora, supongamos que no hay implicaciones de seguridad: incluso si descargo el código a través de SSL, la cuestión de cómo interpretarlo sigue en pie. – dpq