Possiedo un server remoto affidabile che memorizza molti moduli Python personalizzati. Posso recuperarli via HTTP (ad esempio usando urllib2.urlopen
) come testo/semplice, ma non posso salvare il codice del modulo recuperato sul disco rigido locale. Come posso importare il codice come un modulo Python pienamente operativo, incluse le sue variabili globali e le sue importazioni?
Suppongo di dover utilizzare alcune combinazioni delle funzioni del modulo exec
e imp
, ma non sono riuscito a farlo funzionare ancora.Importazione dinamica del modulo Python
risposta
sembra che questo dovrebbe fare il trucco: 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' >>>
Inoltre, come suggerito nell'articolo ActiveState, si potrebbe desiderare di aggiungere il nuovo modulo a sys.modules
:
>>> import sys >>> sys.modules["foo"] = foo >>> from foo import Foo <class 'Foo' …> >>>
Bello, mi sono chiesto questo per un po '. – intuited
Esiste un trucco per consentire all'utente di "from foo import Foo"? In questo esempio, ricevo "ImportError: nessun modulo chiamato foo". –
Vedere la mia risposta aggiornata. –
Ecco qualcosa Ho inserito un segnalibro un po 'indietro che copre qualcosa di simile:
È un po 'oltre quello che vuoi, ma l'idea di base è lì.
- 1. Importazione dinamica dei moduli Python
- 2. Python - classe di importazione dinamica
- 3. Importazione del modulo Python da Bash
- 4. Python: Importazione Modulo
- 5. assoluta vs esplicita importazione relativo del modulo Python
- 6. Errore di importazione del modulo di threading Python
- 7. Importazione modulo Python: linea singola o multilinea
- 8. Errore importazione: nessun nome del modulo libstdcxx
- 9. Importazione del modulo CRUD in Play! 1.2.3
- 10. Errore di importazione del modulo QTCore Pyinstaller
- 11. Elenco importazione modulo predefinito Spyder
- 12. importazione modulo da stringa variabile
- 13. Haskell modulo di importazione
- 14. Importazione Python a livello di funzione VS. Livello modulo
- 15. Errore di simbolo non definito importazione del modulo Cython
- 16. Errore importazione: nessun modulo chiamato django
- 17. Python: importazione di urllib.quote
- 18. dinamica modulo di creazione
- 19. Dinamica: azione modulo
- 20. ES6: dichiarazioni di importazione condizionale e dinamica
- 21. Classe dinamica in Python 2.6: RuntimeWarning: modulo Parent 'plugins' non trovato durante la manipolazione di importazione assoluta
- 22. Errore modulo di importazione Lambda AWS in python
- 23. Forza importazione modulo dalla directory corrente
- 24. Importazione del submodulo Python utilizzando __init__.py
- 25. layout del modulo python
- 26. Importazione di un modulo basato sulla versione python installata?
- 27. Python assoluto di importazione nel modulo non riesce
- 28. Importazione librerie Problema - "ImportError: nessun modulo denominato ____"
- 29. Importazione di tutto (*) dinamicamente da un modulo
- 30. Importazione moduli: __main__ vs import come modulo
stai scaricando su ssl o ogni router intermedio è affidabile? : P – aaronasterling
In realtà, sì - sia lo storage del modulo che il server front-end fanno parte di un singolo sistema (e sono persino situati nella stessa stanza del server). Per ora, supponiamo che non ci siano implicazioni sulla sicurezza: anche se scarico il codice su SSL, la questione su come interpretarla è ancora valida. – dpq