#kivy #buildozer #kivymd #exchangelib
#kivy #buildozer #kivymd #exchangelib
Вопрос:
Я использую exchangelib для доступа к моей почте в exchange из kivymd на python. Когда я запускаю свой код на компьютере, он работает без проблем. Но, когда я развертываю его через buildozer на Android и запускаю свое приложение на Android, я вижу ошибку решателя. Пожалуйста, помогите, я не понимаю источник проблемы.
11-15 13:11:05.087 21267 22545 I python : Traceback (most recent call last):
11-15 13:11:05.087 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/cached_property.py", line 70, in __get__
11-15 13:11:05.089 21267 22545 I python : KeyError: 'resolver'
11-15 13:11:05.089 21267 22545 I python :
11-15 13:11:05.089 21267 22545 I python : During handling of the above exception, another exception occurred:
11-15 13:11:05.089 21267 22545 I python :
11-15 13:11:05.089 21267 22545 I python : Traceback (most recent call last):
11-15 13:11:05.090 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/dns/resolver.py", line 743, in read_resolv_conf
11-15 13:11:05.090 21267 22545 I python : FileNotFoundError: [Errno 2] No such file or directory: '/etc/resolv.conf'
11-15 13:11:05.091 21267 22545 I python :
11-15 13:11:05.091 21267 22545 I python : During handling of the above exception, another exception occurred:
11-15 13:11:05.091 21267 22545 I python :
11-15 13:11:05.091 21267 22545 I python : Traceback (most recent call last):
11-15 13:11:05.092 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/app/main.py", line 155, in <module>
11-15 13:11:05.092 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/app/main.py", line 151, in main
11-15 13:11:05.093 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/kivy/app.py", line 854, in run
11-15 13:11:05.094 21267 22545 I python : File "kivy/_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch
11-15 13:11:05.094 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/app/main.py", line 63, in on_start
11-15 13:11:05.095 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/app/main.py", line 108, in get_mail
11-15 13:11:05.095 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/account.py", line 116, in __init__
11-15 13:11:05.096 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 24, in discover
11-15 13:11:05.097 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 123, in discover
11-15 13:11:05.097 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 429, in _step_1
11-15 13:11:05.098 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 338, in _attempt_response
11-15 13:11:05.099 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 255, in _get_unauthenticated_response
11-15 13:11:05.099 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 379, in _is_valid_hostname
11-15 13:11:05.100 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/cached_property.py", line 74, in __get__
11-15 13:11:05.100 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/exchangelib/autodiscover/discovery.py", line 154, in resolver
11-15 13:11:05.101 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/dns/resolver.py", line 695, in __init__
11-15 13:11:05.101 21267 22545 I python : File "/home/andrey/PycharmProjects/stats_delay_android/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/stats_delay_android/dns/resolver.py", line 746, in read_resolv_conf
11-15 13:11:05.102 21267 22545 I python : dns.resolver.NoResolverConfiguration: None
11-15 13:11:05.102 21267 22545 I python : Python for android ended.
Ответ №1:
exchangelib
необходимо выполнить поиск DNS для автоматического обнаружения для работы. NoResolverConfiguration
это исключение из dnspython
пакета, сообщающее вам, что в вашей системе не удалось найти никакой информации о том, с какими серверами имен обращаться. Обычно это должно быть расположено в /etc/resolv.conf
, как указывает FileNotFoundError
ошибка.
Я не знаю, как работает DNS на Android, или как Python может получить доступ к конфигурации DNS на Android. Если вы не можете заставить dnspython выбрать конфигурацию, вы можете вручную задать список DNS-серверов, которые вы хотите использовать (например [8.8.8.8]
) в атрибуте Resolver.nameservers . Вы можете настроить это в exchangelib с помощью атрибута Autodiscovery.DNS_RESOLVER_ATTRS:
from exchangelib.auto discover import Autodiscovery
Autodiscovery.DNS_RESOLVER_ATTRS['nameservers'] = ['8.8.8.8']