¿Hay alguna forma de ejecutar Python en Android?

Estamos trabajando en una S60 versión y esta plataforma tiene una agradable API de Python.

Sin embargo, no hay nada oficial sobre Python en Android, pero desde Jython existe, ¿hay alguna manera de permitir que la serpiente y el robot trabajen juntos?

preguntado el 19 de septiembre de 08 a las 11:09

23 Respuestas

Una forma es usar Kivy:

Biblioteca de Python de código abierto para el desarrollo rápido de aplicaciones que utilizan interfaces de usuario innovadoras, como aplicaciones multitáctiles.

Kivy se ejecuta en Linux, Windows, OS X, Android e iOS. Puede ejecutar el mismo código [python] en todas las plataformas compatibles.

Aplicación Kivy Showcase

Respondido 31 ago 14, 23:08

Si usa Kivy, aquí hay una herramienta para ayudarlo a empaquetar su proyecto en un APK: github.com/kivy/python-para-android - gdw2

Estuve jugando con Kivy la semana pasada intentando escribir un juego. Sus principales desarrolladores fueron muy rápidos en responder preguntas sobre IRC, sin embargo, si ha programado una GUI antes de Kivy, podrá decir WTF bastante. Algunos ejemplos de cosas indocumentadas que fueron extrañas para mí: Todos los widgets obtienen cada evento on_touch_down incluso si el evento ocurrió fuera de su región, Ningún widget tiene un método draw (), casi todo sucede a través de un patrón de observador personalizado en las Propiedades personalizadas que inventaron ( tenga en cuenta que estos comparten el nombre con la propiedad de Python, pero no son lo mismo) - Trey Stout

@Trey: ¿Qué pasa con las cosas no relacionadas con la GUI? ¿Existe alguna limitación con respecto al uso de los módulos de Python? ¿Qué pasa con el acceso a funciones específicas de Android, como la capacidad de leer mensajes, agregar notificaciones, trabajar en segundo plano, hacer una foto, leer la lista de contactos, determinar la ubicación del GPS, etc.? - Tadeck

¡Y ahora también hay soporte para iOS! - Rubik

Ahora, casi un año después, ¿es mejor el soporte? ¿Ha habido algunas mejoras notables? - TankorSmash

También está el nuevo Entorno de secuencias de comandos de Android (ASE / SL4A) proyecto. Se ve increíble y tiene cierta integración con componentes nativos de Android.

Nota: ya no está en "desarrollo activo", pero algunas bifurcaciones pueden estarlo.

Respondido 19 Feb 18, 04:02

Es cierto, pero tienen que tener ASE instalado, no es una solución que te permita escribir una aplicación de Android en python sin nada ya instalado (el usuario normal será todo "wtf es esto de ASE?) - Estuardo Axon

Además, ASE es un entorno restringido; no puede escribir aplicaciones Android completas incluso si ASE está preinstalado. Ver stackoverflow.com/questions/2076381 - Sridhar Ratnakumar

Creo que se le cambió el nombre a SL4A. - vanuano

Puede escribir aplicaciones, empaquetarlas e incluso venderlas en Play Store si lo desea, con SL4A hoy en día. Ha ido bien desde que se publicaron los comentarios anteriores. Si desea Python en Android, entonces PY4A, que se ejecuta en SL4A, es probablemente la mejor opción. - Carlos Smith

Lo confirmo, SL4A ahora permite escribir paquetes de aplicación listos para usar, probé con perl que funciona - ubugnu

¡Sí! : Entorno de secuencias de comandos de Android

Un ejemplo a través de Matt Cutts a través de SL4A - "aquí hay un escáner de código de barras escrito en seis líneas de código 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)

Respondido el 15 de enero de 19 a las 02:01

s / SÍ / meh. tal vez / ... es extremadamente limitado. ¿algo gráfico o multitáctil? un gran NO. - gcb

@gcb no puede usar el conjunto de widgets de Android normal, pero puede usar "vistas web" (que es lo que usa la aplicación nativa de Gmail, por ejemplo). - gdw2

jugado al golf: 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

@ gdw2, seguramente la aplicación nativa de Gmail solo usa WebViews para analizar correos electrónicos, no para la interfaz de usuario real. Eso hace que la comparación sea un poco absurda. - Veselin Romic

@unmounted, cuando importo Android en mi script de Python, dice que no hay ningún módulo llamado Android. cuando intento instalar pip3 instalar android, aparece un error que dice que no hay ningún módulo como este. ¿Cómo importaste Android o este script de Python? - riki

Pygame Subset para Android

Pygame es un motor de juegos 2D para Python (en el escritorio) que es popular entre los nuevos programadores. La Pygame Subset para Android se describe a sí mismo como ...

... un puerto de un subconjunto de la funcionalidad de Pygame a la plataforma Android. El objetivo del proyecto es permitir la creación de juegos específicos de Android y facilitar la migración de juegos desde plataformas similares a PC a Android.

Los ejemplos incluyen un juego completo empaquetado como APK, lo cual es bastante interesante.

respondido 12 nov., 19:23

Varios aspectos se rompieron en mi Droid X (botones, o pantalla táctil, no puedo recordar), así que no llegué muy lejos con esta ruta. - gdw2

Como Python amante y programador de Android, me entristece decir que este no es un buen camino a seguir. Hay dos problemas:

Un problema es que hay mucho más que un simple lenguaje de programación para las herramientas de desarrollo de Android. Muchos de los gráficos de Android involucran archivos XML para configurar la pantalla, similar a HTML. Los objetos java incorporados están integrados con este diseño XML, y es mucho más fácil que escribir su código para pasar de la lógica al mapa de bits.

El otro problema es que el G1 (y probablemente otros dispositivos Android en el futuro cercano) no son tan rápidos. Los procesadores de 200 MHz y la RAM son muy limitados. Incluso en Java, debe hacer una cantidad decente de reescritura para evitar la creación de más objetos si desea que su aplicación sea perfectamente fluida. Python va a ser demasiado lento durante un tiempo aún en dispositivos móviles.

Respondido 07 Feb 20, 18:02

No hay una sola palabra Java en un teléfono Android, se compila en código de bytes durante el proceso de empaquetado. La velocidad no es el problema: Google podría proporcionar herramientas que produzcan el código de bytes correcto a partir de un código Python (como para Jython). Por cierto, Dalvik no es la máquina virtual de Java, por lo que no se trata de Java VS Python. - e-satis

El código de bytes de JAVA todavía necesita ser procesado por una JVM, y el lenguaje de Java requiere un recolector de basura de todos modos. La velocidad real solo puede provenir de C ++. - LtWorf

@Touzen 2 años más tarde, estamos ejecutando procesadores Intel Atom o procesadores octa-core ahora. ;) - Rohan Kandwal

Debido a la diferencia en la potencia que pueden consumir, los teléfonos siempre serán un orden de magnitud más lentos que los de escritorio. Sin embargo, no renuncie a Python para el dispositivo móvil, porque normalmente solo una fracción del código es responsable del trabajo intensivo del procesador, y esta fracción se puede optimizar reescribiéndola en otro idioma. - Evgeni Serguéiev

Por cierto, Google empuja a Kotlin en estos días, que es un lenguaje bastante desconocido para la mayoría de los usuarios, está claro que es posible admitir otros lenguajes además de Java (soy un desarrollador de Java y un fan de Python). Así que creo que la respuesta es más política que práctica. - Alex

Capa de secuencias de comandos para Android

SL4A hace lo que quiere. Puede instalarlo fácilmente directamente en su dispositivo desde su sitio y no necesita root.

Es compatible con una variedad de idiomas. Python es el más maduro. Por defecto, usa Python 2.6, pero hay una Puerto 3.2 puede utilizar en su lugar. He usado ese puerto para todo tipo de cosas en un Galaxy S2 y funcionó bien.

API

SL4A proporciona un puerto de su android biblioteca para cada idioma admitido. La biblioteca proporciona una interfaz para la API de Android subyacente a través de una única Android objeto.

from android import Android

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

Cada idioma tiene prácticamente la misma API. Incluso puede utilizar la API de JavaScript dentro de las vistas web.

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

Interfaces de usuario

Para las interfaces de usuario, tiene tres opciones:

  • Puede utilizar fácilmente los menús y diálogos nativos genéricos a través de la API. Esto es bueno para los diálogos de confirmación y otras entradas básicas del usuario.
  • También puede abrir una vista web desde dentro de un script de Python y luego usar HTML5 para la interfaz de usuario. Cuando usa vistas web de Python, puede pasar mensajes de un lado a otro, entre la vista web y el proceso de Python que lo generó. La interfaz de usuario no será nativa, pero sigue siendo una buena opción.
  • No hay algo soporte para interfaces de usuario nativas de Android, pero no estoy seguro de qué tan bien funciona; Simplemente no lo he usado nunca.

Puede mezclar opciones, por lo que puede tener una vista web para la interfaz principal y aún usar diálogos nativos.

QPython

Hay un proyecto de terceros llamado QPython. Se basa en SL4A y agrega algunas otras cosas útiles.

QPython le brinda una interfaz de usuario más agradable para administrar su instalación e incluye un pequeño editor de código de pantalla táctil, un shell de Python y un shell de PIP para la administración de paquetes. También tienen un puerto Python 3. Ambas versiones están disponibles en Play Store de forma gratuita. QPython también incluye bibliotecas de varios proyectos de Python en Android, incluido Kivy, por lo que no es solo SL4A.

Tenga en cuenta que QPython todavía desarrolla su bifurcación de SL4A (aunque, para ser honesto, no mucho). El proyecto principal SL4A en sí está prácticamente muerto.

Enlaces de interés

Respondido 12 Oct 19, 03:10

¿Puedes usar alguno de esos para ejecutar un script de Python desde la terminal o tasker? No puedo encontrar una manera :( - pitto

Puede iniciar un script SL4A desde Tasker. Hay algunos ejemplos en esta página que tienen fragmentos de Python que se inician desde Tasker. Sin embargo, es una pregunta completamente diferente. - Carlos Smith

Compilación cruzada e Ignifuga

Mi blog tiene instrucciones y un parche para la compilación cruzada de Python 2.7.2 para Android.

También he sido de código abierto Incombustible, mi motor de juegos 2D. Está basado en Python / SDL y se compila de forma cruzada para Android. Incluso si no lo usa para juegos, puede obtener ideas útiles del código o la utilidad de construcción (llamado Schafer, después de Tim ... ya sabes quién).

respondido 12 nov., 19:23

Impresionante. +1 para esto. No aceptado porque no es posible escribir nada para el público con esto. - e-satis

Si quiere decir que no puede hacer aplicaciones gráficas con él, definitivamente puede, por supuesto, se necesita más trabajo. De hecho, uso este puerto combinado con SDL 1.3, no es trivial pasar del intérprete de Python a una aplicación interactiva, pero se puede hacer. - gabomdq

Termux

Puede utilizar el Termux app, que proporciona un entorno POSIX para Android, para instalar Python.

Tenga en cuenta que apt install python instalará Python3 en Termux. Para Python2, necesitas usar apt install python2.

respondido 13 nov., 19:00

+1 para Termux. Entorno absolutamente maravilloso para trabajar. Gran selección de paquetes en los repositorios, prácticos atajos de botones de volumen. Es lo más parecido a Debian en un teléfono que he encontrado. - James

Kivy

Quería agregar a lo que @JohnMudd ha escrito sobre Kivy. Han pasado años desde la situación que describió, y Kivy ha evolucionado sustancialmente.

El mayor punto de venta de Kivy, en mi opinión, es su compatibilidad multiplataforma. Puede codificar y probar todo utilizando cualquier entorno de escritorio (Windows / * nix, etc.), luego empaquetar su aplicación para una variedad de plataformas diferentes, incluidas Android, iOS, MacOS y Windows (aunque las aplicaciones a menudo carecen de la apariencia nativa).

Con el de Kivy KV lenguaje, puede codificar y construir la interfaz GUI fácilmente (es como Java XML, pero en lugar de TextView, etc., KV tiene su propio ui.widgets para una traducción similar), que en mi opinión es bastante fácil de adoptar.

En la actualidad Excavadora y python-para-android son las herramientas más recomendadas para crear y empaquetar sus aplicaciones. Los he probado ambos y puedo decir con firmeza que hacen que la creación de aplicaciones de Android con Python sea muy sencilla. Sus guías también están bien documentados.

iOS es otro gran punto de venta de Kivy. Puede utilizar la misma base de código con pocos cambios necesarios a través de kivy-ios Las herramientas Homebrew, aunque se requiere Xcode para la compilación, antes de ejecutarse en sus dispositivos (AFAIK, el simulador de iOS en Xcode actualmente no funciona para la compilación de arquitectura x86). También hay algunos problemas de dependencia que deben compilarse manualmente y manipularse en Xcode para tener una compilación exitosa, pero no serían demasiado difíciles de resolver y las personas en Kivy Grupo de Google son realmente útiles también.

Con todo lo dicho, los usuarios con un buen conocimiento de Python no deberían tener problemas para aprender lo básico rápidamente.

Si está utilizando Kivy para proyectos más serios, es posible que los módulos existentes no sean satisfactorios. Sin embargo, existen algunas soluciones viables. Con el (trabajo en progreso) Pyjnius para Android y piobjus, los usuarios ahora pueden acceder a las clases de Java / Objective-C para controlar algunas de las API nativas.

respondido 13 nov., 19:00

No por el momento y tendrías suerte de que Jython funcione pronto. Si está planeando comenzar su desarrollo ahora, sería mejor que se quedara con Java por ahora.

respondido 23 mar '13, 14:03

Usando SL4A (que ya se mencionó por sí mismo en otras respuestas) puede corrida una en toda regla web2py instancia (otro frameworks web python también son candidatos probables). SL4A no le permite hacer componentes de interfaz de usuario nativos (botones, barras de desplazamiento y similares), pero admite WebViews. Un WebView no es más que un navegador web rayado que apunta a una dirección fija. Creo que la aplicación nativa de Gmail usa WebView en lugar de seguir la ruta habitual de los widgets.

Esta ruta tendría algunas características interesantes:

  • En el caso de la mayoría de los marcos web de Python, podría desarrollar y probar sin usar un dispositivo Android o un emulador de Android.
  • Cualquier código Python que termine escribiendo para el teléfono también podría colocarse en un servidor web público con muy poca (si alguna) modificación.
  • Puede aprovechar todas las cosas locas de la web: consultas, HTML5, CSS3, etc.

Respondido el 26 de enero de 16 a las 05:01

Cherrypy funciona bien, con soporte ws4py websocket. La botella también está bien en SL4A. - Carlos Smith

QPython

yo suelo la aplicación QPython. Es gratis e incluye un editor de código, un intérprete interactivo y un administrador de paquetes, lo que le permite crear y ejecutar programas Python directamente en su dispositivo.

respondido 13 nov., 19:00

¡Ahora qpython agregó soporte para Django! ¡Eso es todo lo que necesito! ¡Increíble! - swdev

Desde el Python para Android sitio:

Python para Android es un proyecto para crear su propia distribución de Python, incluidos los módulos que desee, y crear un apk que incluya Python, libs y su aplicación.

Respondido el 09 de enero de 12 a las 04:01

@ e-satis: Gracias por tu comentario. No veo qué respuesta estoy duplicando. Solo puedo suponer que piensas que PFA es lo mismo que Kivy. Aunque está alojado en el proyecto Kivy, ni siquiera tiene que usar Kivy para usar PFA. - gdw2

Verifique la respuesta eliminada de @ tito en el punto inferior de PFA. Además, hay poco interés en ejecutar PFA sin kivy, ya que es el único conjunto de herramientas que tiene. - e-satis

No es porque kivy sea actualmente el único kit de herramientas disponible (algunas personas están trabajando para integrar a otras) sino que es un duplicado. Por favor, considere las otras opciones como están y no las combine todas en una sola publicación: | - tito

Aquí son algunas herramientas enumeradas en el sitio web oficial de Python


Hay una aplicación llamada QPython3 en Play Store, que se puede utilizar tanto para editar como para ejecutar un script de Python.

Enlace de Play Store


Otra aplicación llamada Termux en el que puedes instalar Python usando el comando

pkg install python

Enlace de Play Store


Si desea desarrollar aplicaciones, hay Capa de secuencias de comandos de Android Python (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.


También puede consultar PySide para Android, que en realidad son enlaces de Python para Qt 4.


Hay una plataforma llamada PyMob donde las aplicaciones se pueden escribir exclusivamente en Python y el flujo de herramientas del compilador (PyMob) las convierte en códigos fuente nativos para varias plataformas.


También verifica python-para-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.


Trata Chaquopy Un SDK de Python para Android


Anddd ... BeeWare

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.

Respondido 13 Feb 20, 05:02

usando Termux, puede instalar python 2 y $ apt install python2 - M. Hefny

Chaquopy

Chaquopy es un complemento para el sistema de compilación basado en Gradle de Android Studio. Se enfoca en estrecha integración con las herramientas de desarrollo estándar de Android.

  • Proporciona API completas para llamar Java de Python or Python de Java, lo que permite al desarrollador usar el idioma que sea mejor para cada componente de su aplicación.

  • Puede descargar automáticamente Paquetes de PyPI y compárelos en una aplicación, incluidos paquetes nativos seleccionados como NumPy.

  • Permite el acceso completo a todas las API de Android desde Python, incluido el kit de herramientas de la interfaz de usuario nativa (ejemplo de actividad de Python puro).

Este es un producto comercial, pero es gratuito para uso de código abierto y siempre lo seguirá siendo.

(Soy el creador de este producto).

Respondido 16 Feb 18, 17:02

Otro intento más: https://code.google.com/p/android-python27/

Este incrusta directamente el intérprete de Python en la aplicación apk.

contestado el 09 de mayo de 12 a las 16:05

Puede ejecutar su código Python usando sl4a. sl4a es compatible con Python, Perl, jruby, Lua, BeanShell, JavaScript, TCLy script de shell.

Puedes aprender sl4a Ejemplos de Python.

Respondido el 13 de enero de 15 a las 00:01

Puedes usar QPython:

Tiene una consola Python, un editor, así como una administración / instaladores de paquetes

http://qpython.com/

Es un proyecto de código abierto con implementaciones de Python 2 y Python 3. Puede descargar la fuente y los archivos .apk de Android directamente desde github.

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

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

Respondido el 16 de Septiembre de 16 a las 03:09

Otra opción si está buscando 3.4.2 o 3.5.1 es este archivo en GitHub.

Python3-Android 3.4.2 or Python3-Android 3.5.1

Actualmente es compatible con Python 3.4.2 o 3.5.1 y la versión 10d del NDK. También puede soportar 3.3 y 9c, 11c y 12

Es bueno que simplemente lo descargue, ejecute make y obtendrá el .so o el .a

Actualmente lo uso para ejecutar Python sin procesar en dispositivos Android. Con un par de modificaciones en los archivos de compilación, también puede hacer x86 y armeabi de 64 bits

Respondido 11 Jul 16, 14:07

No vi esto publicado aquí, pero puede hacerlo con Pyside y Qt ahora que Qt funciona en Android gracias a Necessitas.

Parece bastante torpe en este momento, pero podría ser una ruta viable eventualmente ...

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

Respondido 06 Oct 14, 15:10

Una opción más parece ser pyqtdeploy que citando los documentos es:

una herramienta que, junto con otras herramientas proporcionadas con Qt, permite la implementación de aplicaciones PyQt4 y PyQt5 escritas con Python v2.7 o Python v3.3 o posterior. Admite la implementación en plataformas de escritorio (Linux, Windows y OS X) y en plataformas móviles (iOS y Android).

Según Implementación de la aplicación PyQt5 en Android a través de pyqtdeploy y Qt5 se desarrolla activamente, aunque es difícil encontrar ejemplos de aplicaciones de Android que funcionen o tutoriales sobre cómo realizar una compilación cruzada de todas las bibliotecas necesarias en Android. ¡Sin embargo, es un proyecto interesante a tener en cuenta!

contestado el 23 de mayo de 17 a las 13:05

Echa un vistazo a BeeWare. Ha crecido significativamente. Se le otorga la Beca de Educación PSF (Python Software Foundation).

El objetivo de Beeware es poder crear aplicaciones nativas con Python para todos los sistemas operativos compatibles, incluido Android.

Página web oficial: Cuidado

Repos de Github: https://github.com/beeware

Respondido el 24 de junio de 20 a las 22:06

¿Cuál es la diferencia toi Kivy? Es estable y portátil basado en Python Gui - Carsten Thielepape

Comprar nativo del esmalte que toma el concepto react-native y lo aplica a Python.

Permite a los usuarios crear aplicaciones con widgets nativos de Android y proporciona API para usar bibliotecas de Android y Java de Python.

También se integra con android-studio y comparte algunas de las características de desarrollo agradables de react, como la recarga de código y la depuración remota.

Respondido 20 ago 18, 17:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.