/ / Création dynamique de module dans sys.modules: sys devient None - python

La création dynamique de module dans sys.modules entraîne la transformation de sys None - python

Je suis en train de créer un module appelé Qt (Lien Github) où alias un autre module (par exemple PyQt4), de sorte que lorsque j'importe Qt Je suis en train d'importer PyQt4:

from Qt import QtWidgets  # this really imports PyQt4.QtGui

Exemple Qt module:

# Qt.py
import sys
import PyQt4.Qt

sys.modules["Qt"] = PyQt4
PyQt4.QtWidgets = PyQt4.QtGui

Cependant, si j'ajoute print sys à la fin de Qt.py, sys équivaut à None:

print sys
>>> None

Pourquoi sys "pause" et puis-je éviter de le casser?

Ceci est dans Python 2.7.11 sur OS X.


@ Lol4t0 - Voici un exemple où je n’utilise que des modules standard:

# Xyz.py

import os
import sys

sys.modules["Xyz"] = os
print sys  # this will print "None"

Si vous importez ceci, cela signifie que "Aucun n'est imprimé:

$ python
Python 2.7.11 (default, Jan 22 2016, 08:29:18)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import Xyz
None

Réponses:

3 pour la réponse № 1

Lorsqu'il n'y a plus aucune référence à un module, il supprimera tous ses globaux en les remplaçant par None.

Vous devez vous rappeler le vieux verion de sys.modules["Xyz"] (c’est-à-dire le module actuel) jusqu’à ce que vous ayez fini de l’exécuter.