Question

J'ai un module de serveur distant de confiance qui stocke beaucoup personnalisés Python. Je peux les récupérer via HTTP (par exemple en utilisant urllib2.urlopen) sous forme de texte / plaine, mais je ne peux pas enregistrer le code du module récupéré sur le disque dur local. Comment puis-je importer le code en tant que module Python entièrement opérationnel, y compris ses variables globales et les importations?
Je suppose que je dois utiliser une combinaison des fonctions du module exec et imp, mais je l'ai été incapable de le faire fonctionner encore.

Était-ce utile?

La solution

Il ressemble à ceci devrait faire l'affaire: importer un généré dynamiquement le module

>>> import imp
>>> foo = imp.new_module("foo")
>>> foo_code = """
... class Foo:
...     pass
... """
>>> exec foo_code in foo.__dict__
>>> foo.Foo.__module__
'foo'
>>>

En outre, comme l'a suggéré dans l'article de ActiveState, vous pouvez ajouter votre nouveau module à sys.modules:

>>> import sys
>>> sys.modules["foo"] = foo
>>> from foo import Foo
<class 'Foo' …>
>>>

Autres conseils

quelque chose de la Ici, je bookmarked un certain temps qui couvre quelque chose de semblable:

Il est un peu au-delà de ce que vous voulez, mais l'idée de base est là.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top