Eu estou criando um módulo chamado Qt
(Link do Github) onde alias outro módulo (por exemplo PyQt4
), para que quando eu importar Qt
Eu estou de fato importando PyQt4
:
from Qt import QtWidgets # this really imports PyQt4.QtGui
Exemplo Qt
módulo:
# Qt.py
import sys
import PyQt4.Qt
sys.modules["Qt"] = PyQt4
PyQt4.QtWidgets = PyQt4.QtGui
No entanto, se eu adicionar print sys
no final do Qt.py, sys
é igual a None
:
print sys
>>> None
Porque sys
"quebrar" e posso evitar quebrá-lo?
Isso está no Python 2.7.11 no OS X.
@ Lol4t0 - Aqui está um exemplo onde eu estou usando apenas módulos padrão:
# Xyz.py
import os
import sys
sys.modules["Xyz"] = os
print sys # this will print "None"
Portanto, importar isso resultará em "Nenhum é impresso:
$ 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
Respostas:
3 para resposta № 1Quando não houver mais nenhuma referência a um módulo, ele descartará todos os seus globais, substituindo-os por None
.
Você precisa lembrar do velho verion de sys.modules["Xyz"]
(ou seja, o módulo atual) até terminar de executá-lo.