Есть ли способ запустить Python на Android?

Мы работаем над версией S60, и у этой платформы есть хороший Python API.

Тем не менее, нет ничего официального о Python на Android, но поскольку Jython существует, есть ли способ, чтобы змея и робот работали вместе ??

19.09.2008 13:21:12
23 ОТВЕТА
РЕШЕНИЕ

Одним из способов является использование Kivy :

Библиотека Python с открытым исходным кодом для быстрой разработки приложений, использующих инновационные пользовательские интерфейсы, такие как приложения multi-touch.

Kivy работает на Linux, Windows, OS X, Android и iOS. Вы можете запустить один и тот же код [python] на всех поддерживаемых платформах.

Приложение Kivy Showcase

1051
31.08.2014 22:09:40
Если вы используете Kivy, вот инструмент, который поможет упаковать ваш проект в APK: github.com/kivy/python-for-android
gdw2 9.01.2012 04:42:57
На прошлой неделе я играл с Киви, пытаясь написать игру. Их основные разработчики очень быстро ответили на вопросы по IRC, однако, если вы запрограммировали графический интерфейс до того, как Kivy заставит вас немного сказать WTF. Некоторые примеры недокументированных вещей, которые были для меня странными: все виджеты получают каждое событие on_touch_down, даже если событие произошло за пределами их региона, ни у одного виджета нет метода draw (), почти все происходит через собственный шаблон наблюдателя в пользовательских свойствах, которые они составили ( обратите внимание, что они разделяют имя с собственностью Python, но не совпадают)
Trey Stout 30.01.2012 20:41:52
@Trey: А как насчет вещей, не связанных с GUI? Есть ли какие-либо ограничения в отношении использования модулей Python? А как насчет доступа к функциям Android, таким как способность читать сообщения, добавлять уведомления, работать в фоновом режиме, делать фотографии, читать список контактов, определять местоположение GPS и т. Д.?
Tadeck 24.03.2012 04:20:14
И теперь есть поддержка iOS тоже!
rubik 30.06.2012 07:00:50
Теперь, почти через год, поддержка лучше? Были ли какие-либо заметные улучшения?
TankorSmash 17.11.2012 02:32:39

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

40
23.03.2013 14:58:45

Как любитель Python и Android-программист, мне грустно говорить, что это плохой путь. Есть две проблемы:

Одна из проблем заключается в том, что инструменты разработки для Android - это нечто большее, чем просто язык программирования. Большая часть графики Android использует XML-файлы для настройки дисплея, аналогично HTML. Встроенные объекты Java интегрированы с этим макетом XML, и гораздо проще, чем писать код, перейти от логики к растровому изображению.

Другая проблема заключается в том, что G1 (и, возможно, другие устройства Android на ближайшее будущее) не так быстры. Процессоры 200 МГц и оперативная память очень ограничены. Даже в Java вы должны сделать приличное количество переписывания, чтобы избежать создания большего количества объектов, если вы хотите сделать свое приложение идеально гладким. Python будет слишком медленным на мобильных устройствах.

77
7.02.2020 18:44:58
На телефоне Android нет ни одного java-слова, оно компилируется в байт-код в процессе упаковки. Скорость не в этом: Google может предоставить инструменты для создания правильного байтового кода из кода Python (например, для Jython). Кстати, Dalvik - это не Java VM, поэтому речь идет не о Java VS Python.
e-satis 2.11.2008 18:20:13
Байт-код JAVA все еще должен обрабатываться JVM, а язык Java в любом случае требует сборщика мусора. Фактическая скорость может исходить только от C ++.
LtWorf 29.04.2014 11:40:12
@ Еще через два года мы используем процессоры Intel Atom или восьмиъядерные процессоры. ;)
Rohan Kandwal 10.04.2015 06:13:56
Из-за разницы в мощности, которую они могут использовать, телефоны всегда будут на порядок медленнее, чем настольные компьютеры. Тем не менее, не отказывайтесь от Python для мобильного устройства, потому что, как правило, только часть кода отвечает за интенсивную работу процессора, и эту долю можно оптимизировать, переписав его на другом языке.
Evgeni Sergeev 5.12.2015 06:05:55
Кстати, в наши дни Google подталкивает Kotlin - это довольно неизвестный язык для большинства пользователей - ясно, что возможно поддерживать другие языки, кроме Java (я - разработчик Java и фанат Python). Поэтому я думаю, что ответ скорее политический, чем практический.
Alex 11.07.2018 12:55:12

Да! : Среда сценариев Android

Пример через Matt Cutts через SL4A - «вот сканер штрих-кода, написанный в шести строках кода Python:

import android
droid = android.Android()
code = droid.scanBarcode()
isbn = int(code['result']['SCAN_RESULT'])
url = "http://books.google.com?q=%d" % isbn
droid.startActivity('android.intent.action.VIEW', url)
217
15.01.2019 02:29:49
с / ДА / Мех. возможно / ... это чрезвычайно ограничено. что-нибудь графическое или мультитач? большое НЕТ.
gcb 23.10.2010 09:09:48
@gcb вы не можете использовать обычный набор виджетов для Android, но вы можете использовать «webviews» (например, это то, что использует нативное приложение gmail).
gdw2 16.03.2012 16:10:21
игра в гольф:import android as a;d=a.Android();d.startActivity('android.intent.action.VIEW',"http://books.google.com?q=%d"%int(d.scanBarcode()['result']['SCAN_RESULT']))
Alex L 28.12.2012 06:20:47
@ gdw2, конечно же, родное приложение Gmail использует только WebView для анализа электронных писем, но не для реального пользовательского интерфейса. Это делает сравнение немного абсурдным.
Veselin Romić 21.07.2014 21:55:16

Существует также новый проект Android Scripting Environment (ASE / SL4A). Он выглядит потрясающе и имеет некоторую интеграцию с нативными компонентами Android.

Примечание: больше не находится под "активной разработкой", но некоторые вилки могут быть.

347
19.02.2018 04:49:05
Да, но у них должна быть установлена ​​ASE, это не решение, которое позволяет вам написать приложение для Android на python без чего-либо уже установленного (нормальный пользователь будет всем, «что это за ASE?»)
Stuart Axon 26.11.2010 18:30:15
Кроме того, ASE является ограниченной средой; Вы не можете писать полноценные приложения для Android, даже если ASE уже установлена. См stackoverflow.com/questions/2076381
Sridhar Ratnakumar 23.01.2011 21:36:13
Я думаю, что это было переименовано в SL4A.
Vanuan 4.12.2012 21:25:50
Вы можете писать приложения, упаковывать их и даже продавать их в Play Store, если хотите, с SL4A сейчас. Это хорошо, так как комментарии выше были опубликованы. Если вам нужен Python для Android, то PY4A, который работает на SL4A, вероятно, является лучшим выбором.
Carl Smith 9.03.2013 17:53:26
Я подтверждаю, что SL4A теперь позволяет писать готовые к использованию пакеты приложений, я пытался с помощью Perl, он работает
ubugnu 1.03.2015 15:32:36

Pygame Subset для Android

Pygame - это 2D игровой движок для Python (на рабочем столе), который популярен среди новых программистов. Pygame Subset для Android описывает себя как ...

... порт подмножества функциональных возможностей Pygame для платформы Android. Целью проекта является создание игр для Android и упрощение портирования игр с платформ, подобных ПК, на Android.

Примеры включают в себя полную игру, упакованную как APK, что довольно интересно.

89
12.11.2019 23:54:37
На моем Droid X было сломано несколько аспектов (кнопки или сенсорный экран, не помню), поэтому я не продвинулся слишком далеко с этим маршрутом.
gdw2 5.10.2011 21:56:49

Кросс-компиляция и Игнифуга

В моем блоге есть инструкции и патч для кросс-компиляции Python 2.7.2 для Android.

Я также открыл Ignifuga , мой 2D Game Engine. Он основан на Python / SDL и кросс-компилируется для Android. Даже если вы не используете его для игр, вы можете получить полезные идеи из утилиты для кода или сборщика (по имени Шейфер , в честь Тима ... вы знаете, кто).

79
12.11.2019 23:59:45
Впечатляет. +1 за это. Не принято, потому что вы ничего не можете написать для публики с этим.
e-satis 13.10.2011 14:14:25
Если вы имеете в виду, что не можете создавать графические приложения с ним, вы, безусловно, можете, конечно, больше работать. Я на самом деле использую этот порт в сочетании с SDL 1.3, переходить от интерпретатора python к интерактивному приложению нетривиально, но это можно сделать.
gabomdq 14.10.2011 02:38:47

Используя SL4A (о котором уже упоминалось в других ответах), вы можете запустить полноценный экземпляр web2py (другие веб-фреймворки Python также являются вероятными кандидатами). SL4A не позволяет вам создавать собственные компоненты пользовательского интерфейса (кнопки, полосы прокрутки и т. П.), Но он поддерживает WebView . WebView - это в основном не более чем урезанный веб-браузер, направленный на фиксированный адрес. Я считаю, что родное приложение Gmail использует WebView вместо обычного маршрута виджетов.

Этот маршрут будет иметь некоторые интересные особенности:

  • В случае большинства веб-фреймворков Python вы можете разрабатывать и тестировать без использования устройства Android или эмулятора Android.
  • Какой бы код Python вы ни написали для телефона, он также может быть размещен на общедоступном веб-сервере с минимальными изменениями (если таковые имеются).
  • Вы можете воспользоваться всеми этими сумасшедшими вещами в сети: запрос, HTML5, CSS3 и т. Д.
40
26.01.2016 05:48:09
Cherrypy работает хорошо, с поддержкой websocket ws4py. Бутылка тоже подойдет на SL4A.
Carl Smith 13.02.2013 01:28:35

С сайта Python для Android :

Python для android - это проект по созданию собственного дистрибутива Python, включающего в себя необходимые модули, и создания apk, включающего python, libs и ваше приложение.

28
9.01.2012 04:46:53
@ E-удовлетворительно: спасибо за ваш комментарий. Я не вижу, какой ответ я дублирую. Я могу только догадываться, что вы думаете, что PFA такой же, как Kivy. Хотя он размещен в рамках проекта Kivy, вам даже не нужно использовать Kivy для использования PFA.
gdw2 9.01.2012 22:46:51
Проверьте удаленный ответ @ tito в нижней точке PFA. Кроме того, мало интереса к запуску PFA без kivy, поскольку это единственный инструмент, который вы получили.
e-satis 10.01.2012 00:55:53
Это не потому, что kivy в настоящее время является единственным доступным инструментарием (некоторые люди работают над интеграцией других), а не его дубликат. Пожалуйста, рассмотрите другие варианты как есть, и не объединяйте все в один пост: |
tito 16.03.2012 14:34:47

Сценарий для Android

SL4A делает то, что вы хотите. Вы можете легко установить его прямо на свое устройство со своего сайта, и вам не нужен root.

Он поддерживает ряд языков. Питон самый зрелый. По умолчанию он использует Python 2.6, но вместо него есть порт 3.2 . Я использовал этот порт для всех видов вещей на Galaxy S2, и он работал нормально.

API

SL4A предоставляет порт своей androidбиблиотеки для каждого поддерживаемого языка. Библиотека предоставляет интерфейс к базовому API Android через один Androidобъект.

from android import Android

droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade

Каждый язык имеет почти одинаковый API. Вы даже можете использовать JavaScript API внутри веб-просмотров.

let droid = new Android();
droid.ttsSpeak("hello from js");

Пользовательские интерфейсы

Для пользовательских интерфейсов у вас есть три варианта:

  • Вы можете легко использовать родные, родные диалоги и меню через API. Это хорошо для диалогов подтверждения и других основных пользовательских вводов.
  • Вы также можете открыть веб-просмотр из скрипта Python, а затем использовать HTML5 для пользовательского интерфейса. Когда вы используете веб-представления из Python, вы можете передавать сообщения назад и вперед между веб-представлением и процессом Python, который его породил. Пользовательский интерфейс не будет родным, но все равно это хороший вариант.
  • Существует некоторая поддержка собственных пользовательских интерфейсов Android, но я не уверен, насколько хорошо это работает; Я просто никогда не использовал это.

Вы можете смешивать параметры, чтобы иметь возможность просматривать веб-интерфейс основного интерфейса и при этом использовать собственные диалоги.

QPython

Существует сторонний проект с именем QPython . Он построен на SL4A и добавляет некоторые другие полезные вещи.

QPython предоставляет вам более удобный пользовательский интерфейс для управления вашей установкой и включает небольшой сенсорный редактор кода, оболочку Python и оболочку PIP для управления пакетами. У них также есть порт Python 3. Обе версии доступны в магазине Play, бесплатно. QPython также связывает библиотеки из множества Python для проектов Android, включая Kivy, так что это не просто SL4A.

Обратите внимание, что QPython по-прежнему разрабатывает свой форк SL4A (хотя, честно говоря, не так много). Основной проект SL4A сам по себе практически мертв.

Полезные ссылки

78
12.10.2019 02:28:19
Можете ли вы использовать любой из них для запуска скрипта Python из терминала или Tasker? Я не могу найти способ :(
Pitto 26.08.2015 11:27:41
Вы можете запустить скрипт SL4A из Tasker. На этой странице есть несколько примеров, в которых есть фрагменты Python, запускаемые из Tasker. Это действительно совсем другой вопрос.
Carl Smith 1.09.2015 19:05:12

Еще одна попытка: https://code.google.com/p/android-python27/

Этот встраивает непосредственно интерпретатор Python в ваше приложение apk.

21
9.05.2012 15:44:49

Вы можете запустить свой код Python, используя sl4a . sl4a поддерживает Python, Perl , JRuby , Lua , BeanShell, JavaScript, Tcl и сценарий оболочки.

Вы можете изучить Примеры Python для sl4a .

17
13.01.2015 00:34:26

QPython

Я использую приложение QPython . Это бесплатно и включает в себя редактор кода, интерактивный переводчик и менеджер пакетов, что позволяет вам создавать и запускать программы Python прямо на вашем устройстве.

34
13.11.2019 00:23:46
Теперь qpython добавил поддержку Django! Это все что мне нужно! Удивительно!
swdev 7.10.2013 14:36:39

Я не видел этого здесь, но вы можете сделать это с помощью Pyside и Qt теперь, когда Qt работает на Android благодаря Necessitas.

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

http://qt-project.org/wiki/PySide_for_Android_guide

11
6.10.2014 14:59:14

Kivy

Я хотел добавить к тому, что @JohnMudd написал о Киви. Прошли годы с тех пор, как он описал ситуацию, и Киви существенно изменилась.

Самым большим преимуществом Kivy, на мой взгляд, является его кроссплатформенная совместимость. Вы можете кодировать и тестировать все, используя любую среду рабочего стола (Windows / * nix и т. Д.), А затем упаковать свое приложение для ряда различных платформ, включая Android, iOS, MacOS и Windows (хотя приложениям часто не хватает встроенного внешнего вида).

С помощью собственного языка Kivy KV вы можете легко кодировать и создавать интерфейс GUI (он похож на Java XML, но не на TextView и т. Д. KV имеет свой собственный ui.widgetsаналогичный перевод), что, на мой взгляд, довольно легко принять.

В настоящее время Buildozer и python-for-android являются наиболее рекомендуемыми инструментами для сборки и упаковки ваших приложений. Я попробовал их обоих и могу твердо сказать, что они делают создание приложений для Android с Python быстрым. Их руководства также хорошо документированы.

iOS является еще одним важным преимуществом продаж Kivy. Вы можете использовать ту же кодовую базу с небольшими изменениями, необходимыми с помощью инструментов kivy-ios Homebrew, хотя Xcode требуется для сборки перед запуском на их устройствах (AFAIK Симулятор iOS в XCode в настоящее время не работает для сборки x86-архитектуры) , Есть также некоторые проблемы с зависимостями, которые необходимо вручную скомпилировать и поиграть в XCode для успешной сборки, но их не будет слишком сложно решить, и люди из Kivy Google Group тоже очень полезны.

Несмотря на все сказанное, пользователи с хорошими знаниями Python не должны иметь проблем с быстрым освоением основ.

Если вы используете Kivy для более серьезных проектов, вы можете счесть существующие модули неудовлетворительными. Тем не менее, есть несколько реальных решений. С (работа в процессе) pyjnius для Android и pyobjus пользователи теперь могут получить доступ к классам Java / Objective-C для управления некоторыми нативными API.

48
13.11.2019 00:18:07
Я только что скачал Kivy со своего сайта. Демонстрирует поддержку 32- и 64-битного Python 3.4 и демонстрацию работы сенсорного ввода.
codeReview 29.07.2015 02:49:34
@codeReview, я использую Kivy только с Python2 и не имею опыта работы с Python3, все работает нормально?
Anzel 29.07.2015 06:59:10
Я дам вам знать, надеюсь, скоро. Но у меня нет опыта работы с Python за пределами .py файлов командной оболочки CPython 3.4 для быстрого решения вычислительных или алгоритмических задач. Это будет мое первое приложение с графическим интерфейсом. Мне нужно было прочитать больше документации, понять язык Kivy и тщательно следовать инструкциям по установке, чтобы я знал, как установить Kivi в свою выбранную Python IDE и упаковать APK для отправки на Android. Это многоэтапный процесс, поэтому я не могу сказать, что это произойдет очень скоро.
codeReview 29.07.2015 09:33:06
@codeReview, удачи в твоем путешествии. Если это ваше первое приложение, я настоятельно рекомендую использовать .kv в качестве файла макета. Это как файл yaml или просто дерево для определения виджетов макета. Если ваше приложение имеет несколько экранов / макетов, используйте, так ScreenManagerкак это сэкономит вам массу времени. Также советую прочитать их список рассылки, кучка знающих людей, готовых помочь вам.
Anzel 29.07.2015 10:04:29
@codeReview, также, вместо того, чтобы учиться в демонстрационном приложении Kivy, вы можете получить больше информации о поиске некоторых существующих приложений kivy и увидеть, как люди управляют «виджетами» и обратными вызовами в реальном сценарии. Kivy совсем не сложен в изучении, я скажу, что с точки зрения кривой обучения гораздо проще, чем, скажем, в Java + Android или target-C + iOS
Anzel 29.07.2015 10:06:57

Другой вариант, если вы ищете 3.4.2 или 3.5.1, это архив на GitHub.

Python3-Android 3.4.2 или Python3-Android 3.5.1

В настоящее время он поддерживает Python 3.4.2 или 3.5.1 и 10d версию NDK. Он также может поддерживать 3.3 и 9c, 11c и 12

Приятно, что вы просто скачиваете его, запускаете make и получаете .so или .a

В настоящее время я использую это для запуска сырого Python на устройствах Android. С парой модификаций в файлах сборки вы также можете сделать 64-битные x86 и armeabi

12
11.07.2016 13:10:34

Похоже, еще одна опция - это pyqtdeploy, которая ссылается на документы:

инструмент, который в сочетании с другими инструментами, предоставляемыми в Qt, позволяет развертывать приложения PyQt4 и PyQt5, написанные на Python v2.7 или Python v3.3 или новее. Он поддерживает развертывание на настольные платформы (Linux, Windows и OS X) и на мобильные платформы (iOS и Android).

Согласно Развертыванию приложения PyQt5 на Android через pyqtdeploy и Qt5, оно активно разрабатывается, хотя трудно найти примеры работающих приложений для Android или руководство по кросс-компиляции всех необходимых библиотек для Android. Это интересный проект, чтобы иметь в виду, хотя!

9
23.05.2017 12:18:36

Вы можете использовать QPython :

Он имеет консоль Python, редактор, а также управление пакетами / установщики

http://qpython.com/

Это проект с открытым исходным кодом с реализациями Python 2 и Python 3. Вы можете скачать исходный код и файлы Android .apk прямо с github.

QPython 2: https://github.com/qpython-android/qpython/releases

QPython 3: https://github.com/qpython-android/qpython3/releases

14
16.09.2016 02:41:18

Termux

Вы можете использовать приложение Termux , которое предоставляет среду POSIX для Android, для установки Python.

Обратите внимание, что apt install pythonPython3 будет установлен на Termux. Для Python2 вам нужно использовать apt install python2.

39
13.11.2019 00:27:50
+1 для Termux. Абсолютно прекрасная среда для работы. Отличный выбор пакетов в репозиториях, удобные сочетания клавиш регулировки громкости. Это самая близкая вещь к Debian по телефону, который я когда-либо нашел.
James 29.07.2018 03:57:44

Вот некоторые инструменты, перечисленные на официальном сайте Python


В playstore есть приложение под названием QPython3, которое можно использовать как для редактирования, так и для запуска скрипта python.

Playstore ссылка


Другое приложение под названием Termux, в котором вы можете установить python, используя команду

pkg install python

Playstore Link


Если вы хотите разрабатывать приложения, есть Python Android Scripting Layer ( SL4A ) .

The Scripting Layer for Android, SL4A, is an open source application that allows programs written in a range of interpreted languages to run on Android. It also provides a high level API that allows these programs to interact with the Android device, making it easy to do stuff like accessing sensor data, sending an SMS, rendering user interfaces and so on.


Вы также можете проверить PySide для Android , который на самом деле является привязками Python для Qt 4.


Существует платформа под названием PyMob, где приложения могут быть написаны исключительно на Python, а поток инструментов компилятора (PyMob) преобразует их в исходные коды для различных платформ.


Также проверьте Python для Android

python-for-android is an open source build tool to let you package Python code into standalone android APKs. These can be passed around, installed, or uploaded to marketplaces such as the Play Store just like any other Android app. This tool was originally developed for the Kivy cross-platform graphical framework, but now supports multiple bootstraps and can be easily extended to package other types of Python apps for Android.


Попробуйте Chaquopy Python SDK для Android


Anddd ... Пчела

BeeWare allows you to write your app in Python and release it on multiple platforms. No need to rewrite the app in multiple programming languages. It means no issues with build tools, environments, compatibility, etc.

20
13.02.2020 05:55:33
используя Termux, вы также можете установить python 2 $ apt install python2
M.Hefny 16.07.2017 01:53:55

Посмотрите на BeeWare . На момент ответа на этот вопрос он все еще находится на ранней стадии разработки. Его целью является создание собственных приложений на Python для всех поддерживаемых операционных систем, включая Android.

6
12.01.2018 18:56:16
Какая разница, кой Киви? Это стабильный портативный Python на основе
Carsten Thielepape 16.02.2020 18:47:04

Посмотрите на enaml-native, который использует концепцию реагирования- натива и применяет ее к python.

Он позволяет пользователям создавать приложения с собственными виджетами Android и предоставляет API для использования библиотек Android и Java из Python.

Он также интегрируется с android-studio и имеет несколько приятных функций dev, таких как перезагрузка кода и удаленная отладка.

5
20.08.2018 16:59:32

Chaquopy

Chaquopy - это плагин для системы сборки Android Studio, основанной на Gradle. Он ориентирован на тесную интеграцию со стандартными инструментами разработки Android.

  • Он предоставляет полные API для вызова Java из Python или Python из Java , что позволяет разработчику использовать любой язык, который лучше всего подходит для каждого компонента их приложения.

  • Он может автоматически загружать пакеты PyPI и встраивать их в приложение, включая выбранные собственные пакеты, такие как NumPy.

  • Он обеспечивает полный доступ ко всем API-интерфейсам Android из Python, в том числе к инструментарию собственного интерфейса пользователя ( например, работа с чисто Python ).

Это коммерческий продукт, но он бесплатный для использования с открытым исходным кодом и всегда будет таким.

(Я создатель этого продукта.)

22
16.02.2018 17:12:15