# coding=utf8
import demo_for_import_pkg
import time
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
# print(sys.modules)
# print(sys.modules["demo_for_import_pkg"])
# print(type(sys.modules["demo_for_import_pkg"]))
# print(sys.modules["demo_for_import_pkg"])
# print(demo_for_import_pkg.myattr.__dict__.items())
if hasattr(demo_for_import_pkg.myattr, 'attr1'):
del demo_for_import_pkg.myattr.attr1
# print(demo_for_import_pkg.myattr.__dict__.items())
time.sleep(20)
reload(demo_for_import_pkg)
# print(demo_for_import_pkg.myattr.__dict__.items())
"""
sys:
sys.path在python解释器初始化的时候就一起被定义了,sys是一个内置模块,可以通过insert或append去动态改变sys.path中的值;
sys.path作为一个列表提供了python包的搜索路径;sys.path在同一进程中是全局共享的。
setdefaultencoding:
不reload(sys)直接调用setdefaultencoding,会报不存在这个函数;
python容器第一次运行的时候,运行了site.py文件(这个文件删除了sys模块中的setdefaultencoding函数),reload函数绕过了site.py,重新加载了setdefaultencoding函数
reload:
reload函数是我们可以用代码去重新加载一个模块;python会检测代码是否有变化,如果变了会重新编译生成新的字节码文件
"""
sys.path和reload() 理解
于 2021-03-21 19:29:29 首次发布