Не могу записать файл на iOS, используя KIVY в Python - PullRequest
0 голосов
/ 25 октября 2018

Я пишу приложение и пытаюсь использовать модуль mapview из библиотеки сада kivy, и все работает нормально, пока модуль загрузчика из mapview не попытается написать плитку карты, которую он загружает.Он выплевывает: Downloader error: IOError(1, 'Operation not permitted') И файл, который он пытается записать, это: 'cache/26a7511794_11_1041_1360.png', который будет находиться в папке cache каталога приложения (я полагаю).Я также попытался изменить папку кэша (как указано в переменной CACHE_DIR модуля __init__.py из mapview) с cache на /Library/Caches (как это было сделано в https://github.com/kivy-garden/garden.mapview/issues/28), но я получил разрешениетам тоже ошибка.

Какая правильная строка для папки CACHE_DIR, чтобы заставить mapview работать на iOS? Или, может быть, в Xcode мне нужно что-то установить, чтобы это работало?

1 Ответ

0 голосов
/ 27 октября 2018

Я последовал замечательному совету Альберта Гао на его посту здесь , чтобы решить эту проблему.Мне пришлось ОЧЕНЬ ПРОСТО модифицировать скрипт __init__.py модуля mapview.Папка по умолчанию для кэшей не будет работать на IOS.Вот код в __init__.py до:

CACHE_DIR = "cache"

Вот код после исправления его для работы на iOS:

from kivy.utils import platform
from kivy.app import App
import os.path
if platform == 'ios': # Erik Sandberg fix 10/14/2018
    root_folder = App().user_data_dir
    CACHE_DIR = os.path.join(root_folder, 'cache')
    cache_folder = os.path.join(root_folder, 'cache')
    CACHE_DIR = cache_folder
    #CACHE_DIR = "Library/Caches"
else:
    CACHE_DIR = "cache"

Причина: папка по умолчанию, где он пытается сделатькаталог «кеш» фактически не там, где работает основное приложение.Основное приложение действительно работает по пути, полученному от App().user_data_dir.iOS не позволяла мне создавать файлы в папке, которая не находилась ниже того места, откуда действительно запускалось основное приложение.

Надеюсь, это поможет кому-либо еще столкнуться с подобной проблемой!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...