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...
Kannst du bitte die exakte Fehlermeldung angeben? CP2102, CH340 und FTDI laufen ohne probleme out of the box.
:
Bearbeitet durch User
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.
Flip B. schrieb: > Kannst du bitte die exakte Fehlermeldung angeben? Cannot find working Python [...] interpreter
Benutzt hier keine Platformio unter Linux? Hab's leider immer noch nicht hinbekommen :-(
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.
Ach ja, nur um nicht den Eindruck "aber aber man MUSS ja das Terminal benutzen!!11sabber" aufkommen zu lassen: man kann natürlich python-is-python3 auch per GUI in Synaptic installieren.
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.
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.
B. B. schrieb: > Benutzt hier keine Platformio unter Linux? > Hab's leider immer noch nicht hinbekommen :-( Was passiert, wenn du auf den Button klickst, das du python schon hast?
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.
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.
B. B. schrieb: > Flip B. schrieb: >> Kannst du bitte die exakte Fehlermeldung angeben? > > Cannot find working Python [...] interpreter siehe https://randomnerdtutorials.com/vs-code-platformio-ide-esp32-esp8266-arduino/ Insbesondere
1 | $ sudo apt install python3-distutils |
installieren.
B. B. schrieb: > Dann ploppt oben im GUI eine Eingabeaufforderung auf, die mich bittet > den Pfad zur Python.exe anzugeben. Python.exe? Du versuchst aber nicht zufällig, VS Code für Windows unter Wine laufen zu lassen? Das würde allerdings die Probleme erklären … B. B. schrieb: > Nope, dafür gibt es keinen Button. Doch, wäre der Erste von links: „Install Pyt…“
:
Bearbeitet durch User
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.
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?
Wirklich USB oder serielle Schnittstelle? Ansonsten dich zur Gruppe dialout zufügen. sudo usermod -aG dialout ich
B. B. schrieb: > 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? Das geht über entsprechende udev-Regeln. Schau mal hier: http://rowley.zendesk.com/entries/45561-how-to-set-up-linux-for-usb-jtag-adapters
Nop schrieb: > Das geht über entsprechende udev-Regeln. In diesem Fall müßte man das Gerät wissen: >lsusb Das würde mich bei einem ESP32 aber wundern. Da sollte eigentlich ein simpler USB seriell Wandler drauf sein. CH340 o.ä.
Andreas B. schrieb: > Das würde mich bei einem ESP32 aber wundern. Da sollte eigentlich ein > simpler USB seriell Wandler drauf sein. CH340 o.ä. War halt das Erste, was mir bei "Flashen über USB mit Linux" einfiel, weil ich da auch schon reingerannt bin.
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 ;-)
:
Bearbeitet durch User
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.
B. B. schrieb: > Sieht ziemlich wild aus ;-) Ist echt bloß eine Datei mit einer Zeile Text für meinen JTAG-Adapter. Ich hätte openocd (nehme ich zum Flashen) ansonsten immer mit sudo aufrufen müssen, was ich natürlich nicht wollte.
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.
:
Bearbeitet durch User
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.
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.
Bernd schrieb: > Uwe schrieb: >> Insbesondere$ sudo apt install python3-distutils >> installieren. _Bei mir hat unter MxLinux21 erst sudo apt install python3-venv geholfen . :)
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?
:
Bearbeitet durch User
Karsten W. schrieb: > Gibt es Erfahrungswerte PlatformIO zu nutzen ohne Visual Studio Code > installieren zu müssen? Klar, Platformio funktioniert auch mit VSCodium prima. <8)
Danke für den Tip mit VSCodium! https://vscodium.com/ https://docs.platformio.org/en/latest/integration/ide/vscode.html Ich war schon dabei mir Netbeans anzuschauen, aber es ist von der Integration vielleicht nicht so gut und einfach wie VSCodium.
:
Bearbeitet durch User
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 |
:
Bearbeitet durch User
Karsten W. schrieb: > Wofür ist dies wichtig? Mit venv können isolierte Installationen für verschiedene Python-Projekte erstellt werden (Modulabhängigkeiten lokal erfüllen). > python3-venv - venv module for python3 (default python3 version) ist das richtige
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.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.