gpt4 book ai didi

python - 在 sys.modules 中动态创建模块导致 sys 变为 None

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:18 29 4
gpt4 key购买 nike

我正在创建一个名为 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 syssys 等于 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

最佳答案

当不再有任何对模块的引用时,它将通过用 None 替换它们来删除所有全局变量。

您需要记住 sys.modules['Xyz']版本(即当前模块),直到您完成执行它。

关于python - 在 sys.modules 中动态创建模块导致 sys 变为 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37498894/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com