делаю ручную загрузку модуля 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__]
до и после каждой загрузки.
Что я пропустил? Заранее спасибо.