我手动加载模块requests
。我以相同的方式连续两次,一个接一个。该模块已安装并位于默认的site-packages
中。脚本为:
specification = importlib.util.spec_from_file_location(
name='requests',
location='/usr/local/lib/python3.7/site-packages/requests/__init__.py',
)
module = importlib.util.module_from_spec(spec=specification)
sys.modules[module.__name__] = module
specification.loader.exec_module(module=module)
requests = module
print(requests)
print(len(dir(requests)))
print(requests.api)
print()
print()
specification = importlib.util.spec_from_file_location(
name='requests',
location='/usr/local/lib/python3.7/site-packages/requests/__init__.py',
)
module = importlib.util.module_from_spec(spec=specification)
sys.modules[module.__name__] = module
specification.loader.exec_module(module=module)
requests = module
print(requests)
print(len(dir(requests)))
print(requests.api)
输出为以下内容:
module 'requests' from '/usr/local/lib/python3.7/site-packages/requests/__init__.py'>
66
<module 'requests.api' from '/usr/local/lib/python3.7/site-packages/requests/api.py'>
module 'requests' from '/usr/local/lib/python3.7/site-packages/requests/__init__.py'>
53
Traceback (most recent call last):
...
print(requests.api)
AttributeError: module 'requests' has no attribute 'api'
如果我查看dir
的响应,第一个将比第二个具有更多的属性。例如,api
属性出现在第一个模块中,而没有出现在第二个模块中。
我尝试了(其中任何一个都不起作用):
globals()[module.__name__] = module
。del sys.modules[module.__name__]
每次加载前后。我错过了什么?预先谢谢你。