【发布时间】:2016-05-28 12:18:22
【问题描述】:
我正在创建一个名为 Qt (Github link) 的模块,其中我为另一个模块(例如 PyQt4)设置别名,因此当我导入 Qt 时,我实际上是在导入 PyQt4:
from Qt import QtWidgets # this really imports PyQt4.QtGui
示例Qt 模块:
# Qt.py
import sys
import PyQt4.Qt
sys.modules["Qt"] = PyQt4
PyQt4.QtWidgets = PyQt4.QtGui
但是,如果我在 Qt.py 的末尾添加 print sys,sys 等于 None:
print sys
>>> None
为什么sys 会“破坏”,我可以避免破坏它吗?
这是在 OS X 上的 Python 2.7.11 中。
@Lol4t0 – 这是我仅使用标准模块的示例:
# Xyz.py
import os
import sys
sys.modules['Xyz'] = os
print sys # this will print "None"
所以导入它会导致“没有打印:
$ 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
【问题讨论】:
-
这种行为是否仅适用于 PyQt 模块?
-
@Lol4t0 不,这也发生在例如
PySide. -
那你能举个例子,只使用标准模块,显示问题,这样每个人都可以在他们的机器上运行它并能够调查吗?
-
@Lol4t0 好的,添加了一个示例“Xyz.py”。
-
谢谢。我明白了,你可以重新导入 sys
标签: python