У меня есть настольное приложение, созданное на python, которое работает как отдельное приложение, оно отлично работает, не полагаясь на интернет. Только для подключения к Google Drive приложению требуется подключение к Интернету.
Проблема заключается в том, что при запуске приложения, когда оно не подключено к Интернету, приложение аварийно завершает работу, поскольку оно содержит операторы импорта, относящиеся к подключению к Интернету.
Что работает:
При комментировании операторов импорта, связанных с подключением к Интернету, приложение работает нормально в автономном режиме.
Что не работает:
Когда операторы импорта включены в код и при отсутствии подключения к Интернету, приложение просто падает. Некоторый псевдокод ниже.
main.py
from kivy.app import App
'''More import statements'''
....
....
from helper import Hi
class Hello(Hi):
'''Rest of the Code goes here'''
...
...
...
helper.py
'''If the device is not connected to the internet, the following internet import statements throw an error. These imports are needed to connect Google Drive.'''
from __future__ import print_function
import httplib2
import os, io
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
from apiclient.http import MediaFileUpload, MediaIoBaseDownload
try:
import argparse
flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
flags = None
import auth
class Hi:
pass
'''Rest of the Code goes here'''
...
...
...
Expectation:
Нужен способ, чтобы приложение работало даже при отсутствии подключения к интернету. Если нет подключения к Интернету, предупредите пользователя, чтобы он подключился к Интернету для доступа к Google Диску, а не просто зависал.
Ошибка:
httplib2.ServerNotFoundError: Невозможно найти сервер по адресу www.googleapis.com
Я понимаю, что код python читается сверху вниз, приложение вылетает, когда операторы импорта проверяют, что он не подключен к Интернету. Есть ли способ заставить приложение работать в автономном режиме, а для онлайн-действий попросить пользователя подключиться к Интернету?
Ценю вашу помощь в этом вопросе.