Невозможно развернуть приложение на телефоне Android (проблема с reportlab)

#python #android #kivy #reportlab #buildozer

#python #Android #kivy #reportlab #buildozer

Вопрос:

Приложение, которое я пытался развернуть на своем телефоне, хорошо работает на моем настольном ПК. Я развернул его на своем телефоне, используя следующую команду:

 buildozer android debug deploy run
  

Когда я попытался запустить приложение на своем телефоне, оно разбилось. Использование:

 adb logcat | grep python
  

Я получил следующую ошибку:

Ошибка ModuleNotFoundError: нет модуля с именем ‘reportlab’

Я «решил это», отредактировав buildozer.spec файл:

 # (list) Application requirements
# comma separated e.g. requirements = sqlite3,kivy
requirements = python3,kivy,reportlab
  

Но когда я снова попытался развернуть приложение, я получил:

 [INFO]:    Downloading reportlab
[INFO]:    -> running mkdir -p /home/pawel/PycharmPr...(and 82 more)
[INFO]:    -> directory context /home/pawel/PycharmProjects/TwoScreens/.buildozer/android/platform/build-armeabi-v7a/packages/reportlab
[INFO]:    -> running basename https://bitbucket.org/...(and 40 more)
[INFO]:    -> running rm c088826211ca.tar.gz                                   
[INFO]:    -> running rm -f .mark-c088826211ca.tar.gz
[INFO]:    Downloading reportlab from https://bitbucket.org/rptlab/reportlab/get/c088826211ca.tar.gz
Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/pawel/PycharmProjects/TwoScreens/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 1260, in <module>
    main()
  File "/home/pawel/PycharmProjects/TwoScreens/.buildozer/android/platform/python-for-android/pythonforandroid/entrypoints.py", line 18, in main
    ToolchainCL()
  File "/home/pawel/PycharmProjects/TwoScreens/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 709, in __init__
    getattr(self, command)(args)
  File "/home/pawel/PycharmProjects/TwoScreens/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 154, in wrapper_func
    build_dist_from_args(ctx, dist, args)
  File "/home/pawel/PycharmProjects/TwoScreens/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 216, in build_dist_from_args
    args, "ignore_setup_py", False
  File "/home/pawel/PycharmProjects/TwoScreens/.buildozer/android/platform/python-for-android/pythonforandroid/build.py", line 555, in build_recipes
    recipe.download_if_necessary()
  File "/home/pawel/PycharmProjects/TwoScreens/.buildozer/android/platform/python-for-android/pythonforandroid/recipe.py", line 347, in download_if_necessary
    self.download()
  File "/home/pawel/PycharmProjects/TwoScreens/.buildozer/android/platform/python-for-android/pythonforandroid/recipe.py", line 393, in download
    self.download_file(self.versioned_url, filename)
  File "/home/pawel/PycharmProjects/TwoScreens/.buildozer/android/platform/python-for-android/pythonforandroid/recipe.py", line 208, in download_file
    urlretrieve(url, target, report_hook)
  File "/usr/lib/python3.6/urllib/request.py", line 1826, in retrieve
    block = fp.read(bs)
  File "/usr/lib/python3.6/tempfile.py", line 624, in func_wrapper
    return func(*args, **kwargs)
ValueError: read of closed file
  

Насколько я понимаю, buidozer попытка загрузки reportlab завершилась неудачей. Я думал о загрузке reportlab вручную и размещении его в соответствующей папке. В любом случае, я понятия не имею, как это сделать; также я не уверен, решит ли это мою проблему. Любая помощь / подсказка будут высоко оценены.

Ответ №1:

В случае, если у вас все еще есть эта проблема, у меня была точно такая же проблема, к сожалению, я до сих пор не нашел лучшего способа сделать это, поэтому, в конце концов, я просто сделал это:

  1. Перейдите туда, где вы установили reportlab . В моем случае это: ~/home/samdev/repo/venv/myproject/lib/python3.7/site-packages .
  2. Там скопируйте папки: reportlab и reportlab.libs в вашу корневую папку проекта, затем
  3. Удалить reportlab как входящий buildozer.spec requirements .

Теперь он не должен создавать проблем