Python Interop on a (32-bit, ARM) Raspberry Pi Zero?
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Área
- embedded-iot, tooling
Línea de trabajo
Reproduce el fallo desde el Clojure REPL con libpython-clj.python/initialize! y py/run-simple-string en el entorno de Raspberry Pi con ARM de 32 bits descrito. Empieza en libpython-clj/jna/base.clj:20 y sigue el valor nil indicado por el protocolo PToPyObjectPtr; el trabajo estará terminado cuando se haya identificado si el fallo lo causa la plataforma, el runtime de Java o la configuración del proyecto, y se haya registrado una resolución verificada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Thanks for this project! I enjoyed the talk from this year's Conj and it made me want to dive right in.
My use case is somewhat unique, I think: I'm trying to use Python to drive some hardware I have soldered to the GPIO pins on a Raspberry Pi Zero. The Pi is a 32-bit ARM processor, and Python works great on it... but Python interop has been giving me a bit of trouble.
Here's what we're working with:
$ ldconfig -p | grep python
libpython3.7m.so.1.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libpython3.7m.so.1.0
libpython3.7m.so (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libpython3.7m.so
libpython2.7.so.1.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libpython2.7.so.1.0
libpython2.7.so (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libpython2.7.so
and Java:
$ java -version
openjdk version "1.8.0_152"
OpenJDK Runtime Environment (Zulu Embedded 8.25.0.76-linux-aarch32hf) (build 1.8.0_152-b76)
OpenJDK Client VM (Zulu Embedded 8.25.0.76-linux-aarch32hf) (build 25.152-b76, mixed mode, Evaluation)
I'm using Python 3.7 to drive the hardware, and Python itself runs fine.
Likewise, I can run Clojure (both JARs and Clojure in the REPL) without any issue.
But when I try to run Python from within Clojure via the REPL, here's what happens:
=> (require '[libpython-clj.python :as py])
nil
=> (py/initialize!)
Jan 09, 2020 3:05:16 AM clojure.tools.logging$eval1906$fn__1909 invoke
INFO: Executing python initialize!
Jan 09, 2020 3:05:17 AM clojure.tools.logging$eval1906$fn__1909 invoke
INFO: Startup info detected: {:python-home "/usr", :lib-version "3.7", :libname "python3.7m", :java-library-path-addendum "/usr/lib"}
Jan 09, 2020 3:05:17 AM clojure.tools.logging$eval1906$fn__1909 invoke
INFO: Reference thread starting
Jan 09, 2020 3:05:18 AM clojure.tools.logging$eval1906$fn__1909 invoke
INFO: Library python3.7m found at [:system "python3.7m"]
Execution error (IllegalArgumentException) at libpython-clj.jna.base/eval22533$fn$G (base.clj:20).
No implementation of method: :->py-object-ptr of protocol: #'libpython-clj.jna.base/PToPyObjectPtr found for class: nil
The error repeats itself if you try any other commands:
=> (py/run-simple-string "print('Hello')")
Execution error (IllegalArgumentException) at libpython-clj.jna.base/eval22533$fn$G (base.clj:20).
No implementation of method: :->py-object-ptr of protocol: #'libpython-clj.jna.base/PToPyObjectPtr found for class: nil
I started the repl using lein repl in a new project root.
The project was scaffolded with the lein new app command.
Do you see anything off the top of your head that may be the root cause of these issues?
My gut tells me it's one of three things:
- The 32-bit ARM processor, and everything that goes along with that
- The Zulu Embedded Java 8 JDK
- Something dumb that I haven't noticed yet.
Any thoughts as to why this is happening, or is there any more information I could provide?
Really appreciate your time. Thank you!
- Lenguaje dominante
- Clojure
- Estrellas
- 1.2k
- Forks
- 74
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de clj-python/libpython-clj
-
upgrade to dtype-next 11.xxx Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
clj-python/libpython-clj#280 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
clj-python/libpython-clj#275 · 5 comentarios ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 58/100
clj-python/libpython-clj#273 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
clj-python/libpython-clj#271 · 1 comentario ·
-
"auto flush" tty optionally Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
clj-python/libpython-clj#270 · 1 comentario ·
Todos los issues de clj-python/libpython-clj
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
-
.Team/Metabot Priority:P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
needs triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100