python-magic на android

Я собираю buildozer'ом приложение под андроид, написанное на kivy. В нем мне нужно импортировать библиотеку python-magic, которая может определять MIME тип. При отладке моего приложения через logcat возникает это исключение:

07-05 16:53:56.210 26146 26333 I python  :  Traceback (most recent call last):
07-05 16:53:56.211 26146 26333 I python  :    File "/home/user/TestKivyMd/.buildozer/android/app/main.py", line 13, in <module>
07-05 16:53:56.211 26146 26333 I python  :    File "/home/user/TestKivyMd/.buildozer/android/app/file_manager.py", line 5, in <module>
07-05 16:53:56.211 26146 26333 I python  :    File "/home/user/TestKivyMd/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/myapp/magic.py", line 201, in <module>
07-05 16:53:56.212 26146 26333 I python  :  ImportError: failed to find libmagic.  Check your installation

Это исключение происходит в этом куске кода библиотеки python-magic:

libmagic = None
# Let's try to find magic or magic1
dll = ctypes.util.find_library('magic') \
    or ctypes.util.find_library('magic1') \
    or ctypes.util.find_library('cygmagic-1') \
    or ctypes.util.find_library('libmagic-1') \
    or ctypes.util.find_library('msys-magic-1') #for MSYS2

# necessary because find_library returns None if it doesn't find the library
if dll:
    libmagic = ctypes.CDLL(dll)

if not libmagic or not libmagic._name:
    windows_dlls = ['magic1.dll', 'cygmagic-1.dll', 'libmagic-1.dll', 'msys-magic-1.dll']
    platform_to_lib = {'darwin': ['/opt/local/lib/libmagic.dylib',
                                  '/usr/local/lib/libmagic.dylib'] +
                       # Assumes there will only be one version installed
                       glob.glob('/usr/local/Cellar/libmagic/*/lib/libmagic.dylib'),  # flake8:noqa
                       'win32': windows_dlls,
                       'cygwin': windows_dlls,
                       'linux': ['libmagic.so.1'],  # fallback for some Linuxes (e.g. Alpine) where library search does not work # flake8:noqa
                      }
    platform = 'linux' if sys.platform.startswith('linux') else sys.platform
    for dll in platform_to_lib.get(platform, []):
        try:
            libmagic = ctypes.CDLL(dll)
            break
        except OSError:
            pass

if not libmagic or not libmagic._name:
    # It is better to raise an ImportError since we are importing magic module
    raise ImportError('failed to find libmagic.  Check your installation')

На XUbuntu 18.04 все работает отлично, как и на Windows 7. Как можно исправить эту проблему?


Ответы (0 шт):