Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

624
Vistas
How do I unload (reload) a Python module?

I have a long running Python server and would like to be able to update a service without restarting the server. What is the best way to do this?

 if foo.py has changed: unimport foo <-- How do I do this? import foo myfoo = foo.Foo()
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

You can reload a module when it has already been imported using importlib.reload() :

 from importlib import reload # Python 3.4+ import foo while True: # Do some things. if is_changed(foo): foo = reload(foo)

In Python 2, reload was a builtin. In Python 3, it was moved to the imp module. In 3.4, imp was deprecated in favor of importlib . When targeting 3 or later, reference the appropriate module when calling reload or import it.

I think this is what you want. Web servers like the Django development server use this so you can see the effects of changes to your code without restarting the server process.

To quote from the documents:

  • The Python module code is recompiled and the module-level code is re-executed, defining a new set of objects that are bound to the names in the module dictionary by reusing the loader that originally loaded the module. The init function is not called a second time.

  • As with all other objects in Python, old objects are only retrieved after their reference counts drop to zero.

  • The names in the module namespace are updated to point to any new or changed objects.

  • Other references to the old objects (such as names external to the module) are not rebound to refer to the new objects and must be updated in each namespace where they appear, if desired.

As you noted in your question, you will have to rebuild Foo objects if the Foo class resides in the foo module.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda