Есть 3 модуля: main, authorisate, resolve_domain.
Из main запускаются на выполнение все модули. В authorisate выполняется авторизация вконтакте с помощью библиотеки vk_api, возвращает объекты vk и tools, которые должны использоваться в других модулях. В resolve_domain имя группы преобразуется в id. Пока все было в одном файле - работало.
Вопрос: как передать сессию авторизации (vk) из authorisate в другие модули в которых будут функции и классы?
Сейчас выдает ошибку:
File "C:\Source\vk\resolvedomain.py", line 6, in resolve_domain
resolve_domain = vk.resolveScreenName(screen_name=domain)
AttributeError: 'tuple' object has no attribute 'resolveScreenName'
модуль maindef main():
logger.log()
vk = authorisation.authorisate()
print(resolvedomain.resolve_domain('group_domain', vk))
if __name__ == '__main__':
sys.exit(main())
модуль authorisatedef authorisate():
conf = configparser.RawConfigParser()
conf.read('config.cfg')
login = conf.get('account', 'login')
password = conf.get('account', 'password')
vk_session = vk_api.VkApi(login, password, captcha_handler=captcha_handler)
vk_session.auth()
vk = vk_session.get_api()
tools = vk_api.VkTools(vk_session)
return vk, tools
модуль resolve_domaindef resolve_domain(domain):
resolve_domain = vk.resolveScreenName(screen_name=domain)
id_from_domain = 0 - resolve_domain['object_id']
print('resolve ', id_from_domain)
return id_from_domain
P.S. все, что нужно было это в модуле main через запятую перечислить: vk, tools = authorisation.authorisate() так, как функция возвращает 2 значения, а в модуле resolve_domain добавить аргумент: def resolve_domain(domain, vk):