Platformio unter Linux installieren

OP #6858439
Lesenswert?

Hallo,
ich würde gerne Visual Studio Code und PlatformIO unter Linux (derzeit 
Mint 20.1 Cinnamon) installieren. Für VS Code war das recht einfach, da 
es direkt im Paketmanager vom Betriebssystem in einer aktuellen Version 
verfügbar ist.

Wenn ich aber nun die Platformio-Extension installiere, bricht das Ganze 
mit der Meldung ab, dass kein Python -Interpreter gefunden werden 
könnte.

Ich kann das allerdings nicht so ganz nachvollziehen, da sowohl Python 
2.7 als auch 3.8 auf dem System installiert sind (über die Shell kann 
ich das mit python --version, python3 --version ausgeben lassen).

Hat jemand von euch da Erfahrungswerte? Was muss ich tun, damit 
Platformio installiert werden kann?

PS:
Funktionieren die USB-Seriell-Wandler, wie sie auf den üblichen 
ESP32-Boards verwendet werden out of the box? Unter Windows musste da ja 
immer ein spezieller Treiber installiert werden...
Gast #6858464
Lesenswert?

Flip B. schrieb:
> CP2102, CH340 und FTDI laufen ohne probleme out of the box.

Auch die ahch-so-bösen Prolifics laufen unter Linux problemlos.
Allgemein habe ich mit solchen Dingern unter Linux privat nie Probleme*, 
während es unter Windows bei der Arbeit regelmäßig erin Kampf ist.

*) Einmal hatte ich einen RS-485/USB-Wandler, bei dem war der CH340 aber 
schlicht und ergreifend kaputt. Neuer Chip aufgelötet und schon lief 
alles wieder.
Gast #6860184
Lesenswert?

B. B. schrieb:
> Benutzt hier keine Platformio unter Linux?
> Hab's leider immer noch nicht hinbekommen :-(

Möglicherweise erwartet Platformio, Python mit dem Kommando "python" 
ausführen zu können. Das ist unter Mint per default nicht vorgesehen, 
weil unter Ubuntu alle Python-Programme explizit python2 oder python3 
aufrufen, die ja nicht mitieinander kompatibel sind.

Du könntest dem einfach abhelfen:
1
sudo apt-get install python-is-python3

Oder manuell einen Symlink /usr/bin/python auf /usr/bin/python3 setzen, 
was anderes macht das Paket auch nicht, aber am Paketmanager vorbei in 
/usr/bin rumzufummeln, ist vielleicht nicht so gut.
OP #6860249
Lesenswert?

Nop schrieb:
> Möglicherweise erwartet Platformio, Python mit dem Kommando "python"
> ausführen zu können. Das ist unter Mint per default nicht vorgesehen,
> weil unter Ubuntu alle Python-Programme explizit python2 oder python3
> aufrufen, die ja nicht mitieinander kompatibel sind.

Python-is-python3 habe ich bereits installiert. "python --version" 
liefert dann auch 3.8.x. Allerdings interessiert das die 
Platformio-Installation wenig. Da kommt nach wie vor der gleiche Fehler.
#6860257
Lesenswert?

B. B. schrieb:
> Cannot find working Python

Das Blaue auf dem Bild sind Buttons. Wenn man das Fenster weiter 
auseinanderzieht, sollte man lesen können, was sie bedeuten. Einer von 
denen sollte dazu führen, dass eine separate Pythonversion installiert 
wird, ein anderer Button sollte einem die Möglichkeit geben, das zu 
verwendende Binary direkt anzugeben.
OP #6860304
Lesenswert?

Reinhard S. schrieb:
> Was passiert, wenn du auf den Button klickst, das du python schon hast?

Dann ploppt oben im GUI eine Eingabeaufforderung auf, die mich bittet 
den Pfad zur Python.exe anzugeben. Das ergibt irgendwie wenig Sinn, da 
Python bereits im PATH ist, also ohne weiteres gefunden werden müsste. 
Zudem wird unter Linux wohl kaum eine Python.exe existieren, oder?

Jack V. schrieb:
> Einer von denen sollte dazu führen, dass eine separate Pythonversion installiert 
wird

Nope, dafür gibt es keinen Button. Sollte ja auch nicht nötig sein, da 
Python 2.7 und 3.8 ja bereits vorhanden sind.
Gast #6860315
Lesenswert?

B. B. schrieb:

> Dann ploppt oben im GUI eine Eingabeaufforderung auf, die mich bittet
> den Pfad zur Python.exe anzugeben.

Na dann versuch das doch, vielleicht klappt PATH ja nicht, wieso auch 
immer.

> Zudem wird unter Linux wohl kaum eine Python.exe existieren, oder?

/usr/bin/python3 angeben.
Gast #6860359
Lesenswert?

Das Visual Studio Code aus der Anwendungsverwaltung von Mint 20.2 ist 
wohl keine offizielle Version und hat auch miese Bewertungen. Du kannst 
das einfach wieder deinstallieren (rechte Maustaste im Haupt Menü). Wenn 
du unbedingt Microsoft auf deinem Linuxrechner haben willst
dann hol dir das Original .deb File von Microsoft.
https://code.visualstudio.com/
Das wird auch einfach vom Packetmanager per klick installiert.
Und ja dafür ist Microsoft die sicherste Quelle, die haben es ja 
schließich programmiert.
OP #6861526
Lesenswert?

Vielen Dank euch allen, insbesondere an Uwe :-)

Uwe schrieb:
> Insbesondere$ sudo apt install python3-distutils
> installieren.

Das hat geholfen. Jetzt lässt sich PlatformIO installieren und 
funktioniert auch soweit wie gewünscht. Auch mein ESP32-Board wird auf 
Anhieb erkannt und als USB-Gerät angezeigt.

Allerdings gibt es jetzt noch eine kleines Problem:
Beim Flashen auf den Mikrocontroller beklagt sich PlatformIO, dass es 
keinen Zugriff auf die USB-Schnittstelle hat. Ich vermute mal, hier ist 
Linux etwas restriktiver als Windows?
Die genaue Fehlermeldung habe ich jetzt nicht parat, aber ich vermute 
mal das ist ein bekanntes/typisches "Problem" mit USB-Schnittstellen 
unter Linux? Hat jemand einen Tipp wie man die für Anwendungen freigibt?
OP #6862513
Lesenswert?

Das Gerät erscheint in Platformio mit folgenden Daten:

/dev/ttyUSB0
USB2.0-Ser!
USB VID:PID=1A86:7523 LOCATION=1-9.2

Wird wohl ein CH340 oder so sein...

Die Fehlermeldung lautet:
PermissionError: [Errno 13] Permission denied: '/dev/ttyUSB0'

Nop schrieb:
> Das geht über entsprechende udev-Regeln. Schau mal hier:
> http://rowley.zendesk.com/entries/45561-how-to-set-up-linux-for-usb-jtag 
adapters

Sieht ziemlich wild aus ;-)
#6862700
Lesenswert?

someone else schrieb:
> sudo chmod 666 /dev/ttyUSB0
funktioniert auch, aber so etwas macht man nicht und das hält auch nur 
bis zum nächsten reboot.

Sheeva P. schrieb:
> Andreas B. schrieb:
>> Wirklich USB oder serielle Schnittstelle?
>> Ansonsten dich zur Gruppe dialout zufügen.
>> sudo usermod -aG dialout ich
>
> Achtung: danach aus- und wieder einloggen, denn die
> Gruppenzugehörigkeiten werden nur beim Login gelesen.
Stimmt! Vergaß ich zu erwähnen.

B. B. schrieb:
> Wird wohl ein CH340 oder so sein...
Ja, und da hilft der usermod. udev Regeln sind dazu nicht nötig.
Du kannst die Gruppenzugehörigkeit auch in der GUI einstellen, wenn Dir 
das lieber ist.
Gast #6863582
Lesenswert?

Andreas B. schrieb:
> someone else schrieb:
>> sudo chmod 666 /dev/ttyUSB0
> funktioniert auch, aber so etwas macht man nicht und das hält auch nur
> bis zum nächsten reboot.

Und warum genau macht man so etwas nicht? Weil etwa "furchtbar 
unsicher"?

Wir reden hier von einem ganz speziellem Device und nicht von 
irgendwelchen Systemdateien etc. Ich gehe mal davon aus, dass der User, 
welcher in der Lage ist einen µC zu programmieren, bewusst einen zu 
programmierenden Mikrocontroller anschließt, der dann per /dev/ttyUSB0 
zugreifbar ist. Und nicht etwa ein potentiell bösartiges USB-Gerät, 
abgesehen davon, dass bei /dev/ttyUSB0 die Möglichkeit zur Einflussnahme 
vom Device aus auf das System eher ziemlich gering ist, solange da keine 
Software läuft, die /dev/ttyUSB0 zuspielt.

Und ja, bei jedem reboot ist ein chmod auf /dev/ttyUSB0 wieder weg. Ist 
doch gut so, dann kann ich es bewusst wieder freigeben oder auch nicht. 
Ist im Zweifel ein einziger Klick auf ein Icon und ne Passworteingabe. 
Erinnert den User auch daran, zu überlegen, was er da gerade genau tut. 
Ansonsten ist der Zugriff für einen User gesperrt, kann man auch als 
Sicherheitsplus verkaufen.

Wer udev nutzen mag, soll es tun, ich verurteile das nicht. Viele Wege 
führen nach Rom.

Vorweg an alle Apologeten hier, es geht hier nur um chmod 666 auf 
explizit /dev/ttyUSB0 und sonst nirgendswo anders.
#6865573
Lesenswert?

someone else schrieb:
> Andreas B. schrieb:
>> someone else schrieb:
>>> sudo chmod 666 /dev/ttyUSB0
>> funktioniert auch, aber so etwas macht man nicht und das hält auch nur
>> bis zum nächsten reboot.
>
> Und warum genau macht man so etwas nicht? Weil etwa "furchtbar
> unsicher"?

Nein. Eben weil das nur temporär ist (gut, kannst Du auch als 
Sicherheitsfeature betrachten, wenn Du es so magst).
Aber die feine englische Art ist es eher, den User einfach in die 
dialout-Gruppe zu schmeißen (wenn das die Standardgruppe für ttyUSB0 
ist). Schließlich ist die Gruppe extra dafür da.
#7502847
Lesenswert?

Gibt es Erfahrungswerte PlatformIO zu nutzen ohne Visual Studio Code installieren zu müssen?

Dies kommt dann eigentlich einem Klein und Weich Zwang mit voller Überwachung und Rechteabtretung unter Linux gleich.

https://code.visualstudio.com/docs/setup/linux By downloading and using Visual Studio Code, you agree to the license terms and privacy statement.

https://code.visualstudio.com/license Data Collection. The software may collect information about you and your use of the software, and send that to Microsoft.

NEIN DANKE!

Offenbar gibt es noch andere Möglichkeiten: https://docs.platformio.org/en/latest/integration/ide/index.html#desktop-ides Welche haben sich hier unter Linux bewährt und sind zu empfehlen?

#7503287
Lesenswert?

Wofür ist dies wichtig?

Unter Debian 12 (bookworm) gibt es folgende Pakete:

1
python3-pylint-venv - Pylint hook to use same pylint with different virtual envs
2
pypy3-venv - fast alternative implementation of Python 3.x - PyPy venv module
3
python3-virtualenv - Python virtual environment creator
4
python3-full - Default Python Interpreter with complete class library
5
python3-venv - venv module for python3 (default python3 version)
6
python3.11-full - Python Interpreter with complete class library (version 3.11)
7
python3.11-venv - Interactive high-level object-oriented language (pyvenv binary, version 3.11)
8
elpa-pyvenv - Python virtual environment interface

Welches kommt dafür in Frage und wie wird dieses gegenüber den bereits vorhandenen Paketen priorisiert?

Zur Zeit werden folgende Versionen beim Aufruf von python angeboten:

1
python             python2.7          python3.11         python3-config     
2
python2            python3            python3.11-config  pythontex
#7503375
Lesenswert?

Danke für die Erläuterung.

In der Tat funktionierte das originale Debian Paket "platformio" nicht (irgendwelche Traceback Errors) und war zudem sehr veraltet. Daher wieder weg damit (purge).

Es war dann die Installation des Paketes python3.11-venv erforderlich, damit das Skript get-platformio.py funktionierte (dieses Paket hat es selber vorgeschlagen.) https://docs.platformio.org/en/latest/core/installation/methods/installer-script.html

Danach funktionierte die Installation mit "python3 get-platformio.py" problemlos und pio läßt sich ausführen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren