Vytváram modul nazvaný Qt
(Github link), kde som alias iného modulu (napríklad PyQt4
), takže keď importujem Qt
Vlastne dovážam PyQt4
:
from Qt import QtWidgets # this really imports PyQt4.QtGui
príklad Qt
modul:
# Qt.py
import sys
import PyQt4.Qt
sys.modules["Qt"] = PyQt4
PyQt4.QtWidgets = PyQt4.QtGui
Ak však pridám print sys
na konci Qt.py, sys
rovná None
:
print sys
>>> None
Prečo sys
"prestávka" a môžem ho zabrániť rozbitiu?
Toto je v systéme Python 2.7.11 na OS X.
@ Lol4t0 - Tu je príklad, kde používam len štandardné moduly:
# Xyz.py
import os
import sys
sys.modules["Xyz"] = os
print sys # this will print "None"
Takto importovanie povedie k tomu, že "None is printed:
$ 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
odpovede:
3 pre odpoveď č. 1Keď už nie je žiadny odkaz na modul, stratí všetky jeho globály tým, že ich nahradí None
.
Musíte si pamätať starý verion of sys.modules["Xyz"]
(t.j. súčasný modul), až kým nie je vykonaný.