13 ноября 2015 г.

Android. Python. Как установить Kivy и Buildozer на Ubuntu 14.04 (Часть 1)




Установка Kivy, Buildozer и создание .apk файла является основополагающим шагом разработки приложений для Android с Python. В этой статье мы установим Buildozer для автоматического создания .apk и другие зависимости.

Как установить и настроить Java, читаем тут
Java нам необходима для компиляции нашего .apk

Установка PIP
Для установки pip, нужно скачать и запустить файл get-pip.py

$ cd /tmp/
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py

Если setuptools еще не установлен, get-pip.py установит его для вас, можно также почитать про процесс установки и тут  -> https://pip.pypa.io/en/stable/installing/ 

Установка VIRTUALENV (виртуального окружения) в систему
$ sudo pip install virtualenv

Обновим следующие пакеты
$ sudo pip install --upgrade pip virtualenv setuptools
Или
$ sudo pip install -U pip virtualenv setuptools

Установка системных зависимостей
$ sudo apt-get install -y python build-essential mercurial git libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev zlib1g-dev

Установка ffmpeg
$ sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
$ sudo apt-get update
$ sudo apt-get install ffmpeg
Установка SDL2
$ sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev

Установка PyGame
$ sudo apt-get install -y libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libsdl1.2-dev
       
Установка зависимостей для 32bit
$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386

Установка python-dev
$ sudo apt-get install python-dev


Далее переходим в каталог, где мы хотим создать виртуальное окружение. 
Создаем виртуальное окружение c опцией --no-site-packages
pyvenv - название нашей папки
$ virtualenv --no-site-packages pyvenv
$ cd pyvenv

Активируем виртуальное окружение
$ source bin/activate

После предыдущей команды появится имя нашей папки в круглых скобках (pyvenv)vlad@vs:/media/vlad/android/pyvenv$
(pyvenv) - это название нашего виртуального окружения и это означает, что оно активировано и все пакеты будут устанавливаться именно сюда.

Для того, что-бы выйти из окружения нужно выполнить
$ deactivate

Установка Numpy
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install -U numpy

Установка Cython
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install --upgrade cython

Установка Kivy
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install kivy
Дополнительно, если что-то не получилось -> Installation in a Virtual Environment

Затем установим Buildozer, который необходим для создания .apk файла

Способ 1
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install buildozer

Способ 2
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install git+https://github.com/kivy/buildozer.git@master

Установка Plyer 
Plyer еще один модуль для Kivy который предоставляет множество интерфейсов для разных устройств и операционных систем
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install git+https://github.com/kivy/plyer.git@master

Далее установим KivyCatalog
(pyvenv)vlad@vs:/media/vlad/android/pyvenv$ pip install -U pygments docutils

Проверяем как установился наш Kivy

kivy.png


12 комментариев :

  1. Здравствуйте. Делал по вашим рекомендациям строго по шагам и не заметил что папка виртуального окружения создалась в каталоге /tmp. Есть какая либо возможность переместить ее в домашнюю директорию? Или повторить заново все шаги начиная с создания папки виртуального окружения?
    Заранее спасибо за ответ.

    ОтветитьУдалить
    Ответы
    1. Для того, чтобы перенести папку, используйте следующую команду:
      mv -f /tmp/folder_name/ /home/user_name/

      Но я не уверен, насчет зависимостей, которые вы установили в виртуальное окружение, будут ли они работать.

      Удалить
    2. Спасибо за ответ. Пришлось устанавливать заново. Мучаюсь уже второй день - apk собирается а на устройстве или эмуляторе не хочет запускаться. Пишет загрузка и программа закрываеться. Не знаете что это может быть?

      Удалить
    3. На днях сделаю третью часть "как установить .apk на эмулятор или телефон. Тут еще много всяких нюансов, которые нужно знать. По этому так сразу не ответишь на ваш вопрос. Нужно во первых знать в какой OS вы работаете, а во вторых сколько бит 32 или 64.

      Удалить
    4. Разобралься. Питоновский файл должен обязательно называться main.py.

      Удалить
  2. Здравствуйте,делал всё по шагам пока не споткнулся на установке пакетов libsdl2 зависимости есть говорит. Подскажите пожалуйста, как решить?

    ОтветитьУдалить
    Ответы
    1. Ничего страшного, значит у вас уже была эта библиотека, следуйте дальше по шагам.

      Удалить
    2. К сожалению не установился у меня Kivy, из-за этих зависимостей..

      Удалить
    3. https://launchpad.net/ubuntu/+source/libsdl2/2.0.2+dfsg1-3ubuntu1.1

      https://launchpad.net/ubuntu/+source/pcre3/1:8.31-2ubuntu2.1

      Вкрутил эти два пакета нагло,перезагрузил ПК с запуском Recovery Mode==> dpkg ....

      в Терминале проверил python=>import kivy всё вывело 1,9 версию

      P.S. Совет: Вместо apt-get,Лучше используйте aptitude он круче..

      Удалить
    4. aptitude делает все за вас, а с apt-get нужно самому понимать, то что вы собираетесь сделать

      Удалить
  3. Тут есть момент. Я не очень знаю Ubuntu, спасибо Володя что дал ссылку на оф. установку.
    При установке Kivy нужно смотреть вресию Cython там табличка есть,например для версии ivy1..9.1 нужен Cython 0.23
    значит нужно писать так
    pip install Cython==0.23
    Тогда и Kivy нормально становится, но в любом случае табличку посмотреть.

    ОтветитьУдалить
  4. Валерий, спассибо, что заметили. Я тоже сначала так делал:
    pip install Cython==0.23
    но потом на практике когда использовал с разными версиями Python и Kivy, то возникали ошибки. В итоге я решил делать вот-так, установка и затем обновление sudo pip install --upgrade cython
    Вся загвоздка в том, что Cython устанавливается не в виртуальное окружение, а в сому систему, отсюда и ошибки.

    ОтветитьУдалить

Оставить отзыв