python - Python del sys.modules 触发的问题
问题描述
模组.py
print "this is mod modules ..."
import sys
del sys.modules['mod']
sys.modules['mod'] = "test mod"
主文件
import mod
print mod
当我执行时,显示异常:
# python main.py
this is mod modules ...
Traceback (most recent call last):
File "main.py", line 1, in <module>
import mod
File "/root/test1111/mod.py", line 4, in <module>
sys.modules['mod'] = "test mod"
AttributeError: 'NoneType' object has no attribute 'modules'
我想知道,对不起,这是什么原因造成的?
解决方案
不要删除 sys.modules 中的内容。它由解释器在内部使用,当您删除它时可能会出现未定义的行为,尤其是当您尝试再次重新导入模块时。
未定义的行为意味着可能会出现奇怪的错误,解释器可能会崩溃,或者您的猫可能会着火。
推荐阅读
- python - 刮“强”类 Scrapy
- c# - SceneManager.LoadScene 不适用于开发移动构建
- c# - 将工作表从 Excel 文件复制到新的 Excel 文件
- python - Python冻结数据类,允许通过方法更改属性
- sql - 将多列连接成新列
- android - 如何使用新标记更新 Mapbox Android 符号层
- entity-framework-core - LINQ - 实体框架核心 - 选择最近的记录,仅当它匹配另一个条件时
- javascript - 如何检查数组元素是否是数组中唯一的值?
- symfony - symfony 翻译系统是否支持连接任意长度的元素列表?
- npm - 用户级别的每个项目的 npm postinstall 脚本