Probleme mit Setup für Objekterkennung [War: Warum finden die Menschen so fasziniert von Python?]

Gast #7342359
Lesenswert?

Hey, ich habe mal versucht diese Anleitung zu folgen: https://www.youtube.com/watch?v=ZuGNQYPJqKk

und ich irgendwo Mitte 45:05 die Installv2.3.6.sh ausführe, dann dauert die Installation so wie er das sagt: 7 Stunden. Ich war verwundert, warum das so lange dauern muss. Ich komme aus der Windows-Welt und kenne diese extreme Länge nicht. Und tatsächlich bleibt die Installation irgendwo hängen bei python, irgendwo an der Stelle des Befehls: >> wget https://bootstrap.pypa.io/get-pip.py

ERROR: This script does not work on Python 3.6 The minimum supported is 3.7

Und er basht einfach nicht weiter. Ich habe exakt dieselbe SD Image genommen wie er, doch es funktioniert einfach nicht. Es lässt sich nicht 1:1 reproduzieren. Ich konnte diesen error zwar beheben aber dann kommt schon der nächste Fehler mit virtualenvwrapper so dass ich kein Bock mehr hatte. Install-Datei sieht so aus: https://github.com/wiegehtki/nvjetson_opencv_gsi/blob/master/Installv2.3.6.sh eigentlich will er sich die Mühe machen, die Komplexität zu vereinfach indem die Install alles automatisch installiert, was man halt von Windows her kennt.

Doch mir ist aufgefallen dass solche Skripte permanent Bibliotheken irgendwo her Online holt. Und genau das ist der Knackpunkt! Was soll das eigentlich? Da ist es doch klar dass es einfach nicht funktionieren kann. Kleinste Änderungen, wenn jemand online etwas löscht oder ersetzt führen zu Problemen. Warum machen die Pythoner das? Das Internet ist ein extrem unsicherer Ort um sich die Quellen von dort zu beziehen. Normalerweise verpackt man alles, was zum Projekt gehört, in eine zip oder rar Datei, damit alles 100% sicher laufen kann.

Mein Kommentar taucht dort auf seinem Youtube-Video auch nicht auf. Ist das shadowban? Haben die Yankees was gegen die Bildung? Das heisst, es nutzt nicht mein Problem bei ihm auf dieser Plattform zu schildern, weil dort alles zensiert wird.

Skript ihr auch immer mit Python rum und führt immer diese doofen pip, wget blablah aus? Was wenn der Router nicht mehr funktioniert? Könnt ihr mir mal erklären was das eigentlich alles soll???

#7342393
Lesenswert?

Wie um alles in der Welt kommt man auf die abstruse Idee, sich irgendein Skript, das irgendein Youtuber hochgeladen hat, runterzuladen und das ungeprüft auf den Rechner loszulassen? Warum gehst du nicht auf die offizielle Website python.org und lädtst dir da ganz regulär den Installer runter? Dann kannst du auch gleich die dort vorhandene offizielle Dokumentation nutzen, um dir Python beizubringen statt irgendwelcher random Videos (YT ist eine Unterhaltungsplattform, auf der Jeder so ziemlich jeden Quatsch ungeprüft hochladen kann – ich zumindest käme nicht im Traum darauf, das als verlässliche Informationsquelle zu sehen. Aber was weiß ich schon...)..

Und dein Problem liegt auch nicht an der Sprache Python per se, sondern an pip. Lerne und verstehe den Unterschied.

#7342419
Lesenswert?

C-Newbie schrieb:

Hey, ich habe mal versucht diese Anleitung zu folgen: https://www.youtube.com/watch?v=ZuGNQYPJqKk

Ja, es war ein Versuch. Das Problem ist sicher nicht Python.

indem die Install alles automatisch installiert, was man halt von Windows her kennt.

Das hat nix mit dem Betriebssystem zu tun.

Horst G. schrieb:

Wie um alles in der Welt kommt man auf die abstruse Idee, sich irgendein Skript, das irgendein Youtuber hochgeladen hat, runterzuladen und das ungeprüft auf den Rechner loszulassen? Warum gehst du nicht auf die offizielle Website python.org und lädtst dir da ganz regulär den Installer runter?

Recht hat er.

Doch mir ist aufgefallen dass solche Skripte permanent Bibliotheken irgendwo her Online holt.

Abhängigkeiten berücksichtigen. Macht auch Dein geliebtes Windows so.

Haben die Yankees was gegen die Bildung?

Was hat das mit den Amis zu tun? Hast Du damit ein Problem?

Skript ihr auch immer mit Python rum und führt immer diese doofen pip, wget blablah aus? Was wenn der Router nicht mehr funktioniert? Könnt ihr mir mal erklären was das eigentlich alles soll???

Ja, könnte ich. Frage Google oder - nein, besser Yandex.

Gast #7342420
Lesenswert?

C-Newbie schrieb:

Mein Kommentar taucht dort auf seinem Youtube-Video auch nicht auf. Ist das shadowban?

Etwa der im Anhang befindliche? ;)

Horst G. schrieb:

Wie um alles in der Welt kommt man auf die abstruse Idee, sich irgendein Skript, das irgendein Youtuber hochgeladen hat, runterzuladen und das ungeprüft auf den Rechner loszulassen?

Wirklich? Mit ein klein wenig Verstand, schaut man kurz über das Skript drüber und sieht das es nichts "böses" tut.

Und hätte man statt generalisiertem Youtube bashing mal gelesen um was es überhaupt geht, hätte man gewusst das es nicht um "den Rechner" geht sondern um einen SBC. Man kann da also schonmal eher nix kaputt machen großartig.

C-Newbie schrieb:

Doch mir ist aufgefallen dass solche Skripte permanent Bibliotheken irgendwo her Online holt. Und genau das ist der Knackpunkt! Was soll das eigentlich? Da ist es doch klar dass es einfach nicht funktionieren kann. Kleinste Änderungen, wenn jemand online etwas löscht oder ersetzt führen zu Problemen. Warum machen die Pythoner das? Das Internet ist ein extrem unsicherer Ort um sich die Quellen von dort zu beziehen. Normalerweise verpackt man alles, was zum Projekt gehört, in eine zip oder rar Datei, damit alles 100% sicher laufen kann.

Das "Internet" ist zwar kein ungefährlicher Ort, aber das Schreckgespenst das du da gerade an die Wand malen willst kann ich hier nicht erkennen.

Es werden Pakete aus den offiziellen Paketquellen installiert und darüber hinaus Software aus github repos die allesamt durchaus bekannt sind.

Noch dazu ist dieses Video und das dazu gehörige Install Script über 2 Jahre alt! Und offenbar hat der Ersteller keinen Bock daran es zu pflegen. Das sich in 2 Jahren Mindestanforderungen im Bezug auf Python Versionen ergeben könnten, darauf kann man kommen.

Das sind alles zugegeben vielleicht für einen Linux Anfänger erstmal "Probleme" aber definitiv keine unlösbaren.

Linux ist halt kein "Ich lad mal runter und installier" ... Und ganz nebenbei, Das mit dem "Alles in eine Zip damit es 100% sicher läuft" ist auch bei Windows nicht wirklich der Fall. Man muss nur dran denken das so manche Software dot.net haben will und natürlich in einer ganz speziellen Version. Zum Beispiel.

Angehängte Dateien:
#7342423
Lesenswert?

C-Newbie schrieb:

Normalerweise verpackt man alles, was zum Projekt gehört, in eine zip oder rar Datei, damit alles 100% sicher laufen kann.

Da hindert dich auch unter Python keiner dran. Wird auch recht häufig gemacht – glaube, für Win-User konnte man gar recht einfach alles in eine ausführbare Datei stecken.

C-Newbie schrieb:

Könnt ihr mir mal erklären was das eigentlich alles soll?

Kannst du denn erklären, was dein Beitrag eigentlich hier soll? Stell deine Frage doch dem Ersteller des Videos. Oder frag dich lieber selbst, was dich dazu bewogen hat, irgendwelche YT-Videos als Referenz zu nehmen, statt die Originaldoku (samt ausgezeichnetem Tutorial, um das mal angemerkt zu haben).

Gast #7342435
Lesenswert?

Warum machen die Pythoner das?

Weil die so "komisch" ticken.

Ich hab vor Jahren, als daran noch aktiv entwickelt wurde, mal das "Python for Android" aus der "SL4A Script Languages for Android" ausprobiert. Da funktionierte auch fast nicht. Soll heissen: Es funktionierte wohl nur beim Autor. Da steckte ueberall noch sein literales Homeverzeichnis in den Projektdateien...

Aber die allgemeingueltige OSS-Ausrede: "Entwickle es doch selber weiter. Du hast ja die Quellen". Oder: "Meckere nicht, mach es einfach besser". Usw. usf.

Vom Python von Nokia fuer Symbian war ich da durchaus besseres gewoehnt. Z.B. eine halbwegs vollstaendige Dokumentation. Die gab es fuer das "Python for Android" als Kaufversion. Darin beschrieb der Autor aber ueberwiegend die aus seinem Ego hervorgegangen "Verbesserungn" von Python. Als vollstaendige Dokumentation war das eher Fehlanzeige...

Wenn du interessante (Skript-)Sprachen kennenlernen willst: DaVinci von Arizone State University.

Gast #7342455
Lesenswert?

Achso, ist mein Kommentar wohl doch online, nach dem ich den Link herausgenommen habe?

Eigentlich wollte ich so kommentieren:

sudo -H python3 get-pip.py dann erhalte ich ERROR: This script does not work on Python 3.6 The minimum supported is 3.7. Please use https://bootstrap.pypa.io/pip/3.6/get-pip.py instead.

Das habe ich dann auch getan. Oder ist es besser Python auf 3.7 upzugraden?

Ich hab gelesen, dass dann andere Probleme auftreten soll?

Welche Zeile war verantwortlich, für die Installation des veralteten Pythons 3.6?

Beitrag #7342464 wurde von einem Moderator gelöscht.
Gast #7342501
Lesenswert?

C-Newbie schrieb:

Welche Zeile war verantwortlich, für die Installation des veralteten Pythons 3.6?

Im Grunde genommen ist das ziemlich egal. Du hast auf Deinem SBC doch ein Linux, oder? So ziemlich jedes halbwegs aktuelle Linux hat Python bereits dabei und beinah immer gehört es zum standardmäßigen Installationsumfang. Sofern pip und virtualenv noch nicht installiert sein sollten dürfte sich das mit dem Paketmanager der Linuxdistribution leicht nachholen lassen.

Magst Du vielleicht kurz sagen, was für ein Linux da auf Deinem SBC läuft und wo ich das hier mehrfach erwähnte Skript von dem Videoautor finde?

Gast #7342514
Lesenswert?

Doch mir ist aufgefallen dass solche Skripte permanent Bibliotheken irgendwo her Online holt.

Das ist kein Python Problem. Das ist ein allgemeines Problem und wird jedes Jahr schlimmer. Auf den Servern steigt schon seit 10 Jahren niemand mehr durch. Die Admins versuchen gar nicht mehr die ganzen Abhängigkeiten zu installieren. Die verlangen ein komplettes Image für ihre Containerverwaltung.

Auf dem Desktop wird es auch immer schlimmer. Ubuntu versucht gar nicht mehr, alle Pakete mit den selben Versionen zu bauen. Die basteln für jedes Programm ein eigenes Snap Paket.

Gast #7342548
Lesenswert?

C-Newbie schrieb:

Kann jemand in der Überschrift "Python" durch pip & bash ersetzen?

Da müßtest Du wohl einen Moderator dieses Forums anschreiben.

Die Probleme sind tiefer. Er erkennt nicht mal dieses Teil: https://www.waveshare.com/hdmi-to-csi-adapter.htm

Hm, wozu braucht man das?

Aber kommen wir zurück zu dem Skript... das ist schon einigermaßen seltsam, ehrlich gesagt. Auf der einen Seite installiert er Dinge aus den Quellen, die er andererseits aber auch nochmal über den Paketmanager installiert?! Zum Beispiel eben auch pip. Auch diese manuelle Installation von OpenCV... keine Ahnung, warum das nötig sein soll, auf meinen Rechnern und auch auf Raspberry Pis läßt sich das ganz normal über pip installieren. Ich weiß auch nicht, warum der Herr alles so penibel auf Versionen festnagelt? Für CUDA, TensorRT und Tensorflow kann ich das ja noch verstehen, aber für den Rest halte ich das weitestgehend für übertrieben...

Zudem scheinst Du eine veraltete Version des Installationsskripts zu verwenden, die Versionsnummer in Deinem Link ist 2.3.6. Wenn man aber ins Repo dieses Herrn [1] schaut, findet man daneben noch eine Version 2.3.8.

Warum die Installation so lange dauern soll, kann ich Dir allerdings nun sagen: da werden einige SEHR umfangreiche Bibliotheken installiert, unter anderem CUDA, TensorRT und weitere. Die sind einfach richtig fett, meine letzte CUDA, cuDNN und TensorRT-Installation mußte schon mehrere Gigabyte herunterladen, und danach wollen die natürlich auch entpackt werden, auf einer schwächlichen ARM-CPU mit einer lahmen SD-Karte als Backend. Sowas dauert nunmal, sorry, und auch das hat nichts mit pip, Python, oder der Bash zu tun, sondern mit großen Datenmengen auf einem kleinen Gerät. Und dann kommt noch hinzu, daß er diverse Pakete aus den Quellen übersetzt, dabei ist so ein kleiner ARM-Rechner mit lahmem Backend natürlich auch keine besonders performante Angelegenheit.

[1] https://github.com/wiegehtki/nvjetson_opencv_gsi/

Gast #7342551
Lesenswert?

Andreas S. schrieb:

C-Newbie schrieb:

Er erkennt nicht

Wer? Dein Opa? Der Weihnachtsmann? Ach, schon der Osterhase?

Dieser SBC Jetson Nano

https://forums.developer.nvidia.com/t/hdmi-to-csi-interface/73551 https://forums.developer.nvidia.com/t/tc358743-on-jetson-nano/146948

Es sieht so aus, als bekommt niemand dieses Problem gelöst? Oder zumindest wird das sehr kompliziert sein?

Gast #7342555
Lesenswert?

Karl Käfer schrieb:

C-Newbie schrieb:

Kann jemand in der Überschrift "Python" durch pip & bash ersetzen?

Da müßtest Du wohl einen Moderator dieses Forums anschreiben.

Die Probleme sind tiefer. Er erkennt nicht mal dieses Teil: https://www.waveshare.com/hdmi-to-csi-adapter.htm

Hm, wozu braucht man das?

Aber kommen wir zurück zu dem Skript... das ist schon einigermaßen seltsam, ehrlich gesagt. Auf der einen Seite installiert er Dinge aus den Quellen, die er andererseits aber auch nochmal über den Paketmanager installiert?! Zum Beispiel eben auch pip. Auch diese manuelle Installation von OpenCV... keine Ahnung, warum das nötig sein soll, auf meinen Rechnern und auch auf Raspberry Pis läßt sich das ganz normal über pip installieren. Ich weiß auch nicht, warum der Herr alles so penibel auf Versionen festnagelt? Für CUDA, TensorRT und Tensorflow kann ich das ja noch verstehen, aber für den Rest halte ich das weitestgehend für übertrieben...

Zudem scheinst Du eine veraltete Version des Installationsskripts zu verwenden, die Versionsnummer in Deinem Link ist 2.3.6. Wenn man aber ins Repo dieses Herrn [1] schaut, findet man daneben noch eine Version 2.3.8.

Warum die Installation so lange dauern soll, kann ich Dir allerdings nun sagen: da werden einige SEHR umfangreiche Bibliotheken installiert, unter anderem CUDA, TensorRT und weitere. Die sind einfach richtig fett, meine letzte CUDA, cuDNN und TensorRT-Installation mußte schon mehrere Gigabyte herunterladen, und danach wollen die natürlich auch entpackt werden, auf einer schwächlichen ARM-CPU mit einer lahmen SD-Karte als Backend. Sowas dauert nunmal, sorry, und auch das hat nichts mit pip, Python, oder der Bash zu tun, sondern mit großen Datenmengen auf einem kleinen Gerät. Und dann kommt noch hinzu, daß er diverse Pakete aus den Quellen übersetzt, dabei ist so ein kleiner ARM-Rechner mit lahmem Backend natürlich auch keine besonders performante Angelegenheit.

[1] https://github.com/wiegehtki/nvjetson_opencv_gsi/

Ok danke für die ausführliche Antwort. Dann verstehe ich so langsam wie ich mir das vorstellen soll und ich anders angehen und lernen muss.

Hm, wozu braucht man das?

Eigentlich wollte ich Objekterkennung über HDMI-Ausgang eines anderen Gerätes ausprobieren.

Ich kauf mir zuerst eine Raspberry PI Kamera version 2 um zu überprüfen ob CSI-2 Eingang überhaupt funktioniert

Gast #7342571
Lesenswert?

C-Newbie schrieb:

Ok danke für die ausführliche Antwort. Dann verstehe ich so langsam wie ich mir das vorstellen soll und ich anders angehen und lernen muss.

Nun, wie bereits andere gesagt haben: pip ist ein Paketmanager für Python und kann Pakete aus allerlei Quellen installieren, unter Berücksichtigung der notwendigen Abhängigkeiten. Dabei kann er vorkompilierte Binärpakete installieren, aber wenn es kein fertiges Binärpaket für die gewünschte Plattform gibt, dann lädt er sich die Sourcen herunter, übersetzt, und installiert sie. Das ist eigentlich ein ziemlich cooles Tool und etwas, das ich in anderen Programmiersprachen oft vermißt habe, erst Recht in dieser Qualität und Flexibilität.

Nur, wie gesagt: was der Autor Deines Skriptes da macht, erscheint mir an einigen Stellen etwas... seltsam, um nicht zu sagen widersprüchlich. Zum Beispiel das Skript "get-pip.sh" ist eigentlich für Plattformen gedacht, deren Distributionspakete kein pip dabeihaben, was auf einem Debian-Linux allerdings vollkommen ausgeschlossen sein dürfte. Und so installiert der Herr ja auch das Paket python3-pip über Debians Paketmanager apt, will es aber gleichzeitig nochmal über get-pip.sh installieren? Warum?

Außerdem installiert er den Compiler und andere Dinge manuell, dabei gibt es unter Debian-basierten Linuxsystemen das Paket "build-essential", das den GCC C- und C++-Compiler, make und anderes installiert, und auch cmake könnte er ganz normal aus den Paketrepos des Distributors installieren. Irgendwie scheint mir das alles ein wenig mit der heißen Nadel gestrickt.

Andererseits weiß ich aber auch, daß die Abhängigkeiten zwischen Tensorflow und anderen Paketen wie den proprietären CUDA, cuDNN und TensorRT durchaus ein bisschen hakelig sein können. Aber sowohl Debians apt als auch Pythons pip können spezifische Paketversionen installieren, pip tut das dabei sogar standardmäßig, wenn man eine entsprechende "dependencies.txt" übergibt.

Eigentlich wollte ich Objekterkennung über HDMI-Ausgang eines anderen Gerätes ausprobieren.

Ah, verstehe. Sowas hab' ich noch nicht gemacht, da kann ich leider nicht behilflich sein.

Ich kauf mir zuerst eine Raspberry PI Kamera version 2 um zu überprüfen ob CSI-2 Eingang überhaupt funktioniert

Ansonsten geht sicher auch eine ordentliche USB-Webcam, ich benutze gerne die Modelle Brio, C920 und C525 von Logitech, aber andere des Herstellers sollten es auch tun.

Gast #7342739
Lesenswert?

Ohne das eigentliche Problem angeschaut zu haben: Benutze Python(-programme) in einer virtuellen Umgebung, immer! Oder halt Docker, Snap und Konsorten. Andernfalls fliegen dir die Paketabhängigkeiten irgendwann um die Ohren. Und glaub' mir, das willst du nicht.

Gast #7342994
Lesenswert?

in einer virtuellen Umgebung, immer!

Verringert das in diesem Fall die Summe an Problemen?

Tensorflow braucht CUDA und ausserdem will C-Newbie den HDMI-Ausgang eines anderen Gerätes einlesen.

Hast du ausprobiert, ob das klappt? Und ob CUDA auch nach einem Update der Virtualisierung oder Grafiktreiber oder Betriebssystem immer noch funktioniert?

will es aber gleichzeitig nochmal über get-pip.sh installieren? Warum?

Das machen wir doch alle so. Wir probieren so lange rum, bis wir irgend etwas halbwegs konsistentes bekommen. Ein sauberes Installationsskript zusammen stellen ist zu viel Arbeit. So kopieren wir alles, was wir gemacht hatten in ein Shell-Script.

Gast #7344583
Lesenswert?

Noch ein Kommentar schrieb:

in einer virtuellen Umgebung, immer!

Verringert das in diesem Fall die Summe an Problemen?

In diesem Fall würde ein weniger chaotisches Setup die Summe an Problemen ganz sicher verringern.

Tensorflow braucht CUDA und ausserdem will C-Newbie den HDMI-Ausgang eines anderen Gerätes einlesen.

Verzeihung, aber nein, Tensorflow braucht kein CUDA, kein cuDNN und auch kein TensorRT. Die braucht es nur, um hochparallel auf der GPU zu rechnen. Es geht aber auch auf der CPU, aber dann eben nicht so schnell.

will es aber gleichzeitig nochmal über get-pip.sh installieren? Warum?

Das machen wir doch alle so. Wir probieren so lange rum, bis wir irgend etwas halbwegs konsistentes bekommen. Ein sauberes Installationsskript zusammen stellen ist zu viel Arbeit. So kopieren wir alles, was wir gemacht hatten in ein Shell-Script.

Mag sein, daß Du das so machst, aber ich mache das jedenfalls nicht so und werde das auch in Zukunft nicht tun. Ich würde mir vielmehr mit Ansible ein sauberes Playbook für die Installation erstellen, und dieses Playbook kann ich dann lokal oder remote benutzen, wie ich mag.

Gast #7344609
Lesenswert?

Jack V. schrieb:

Oder frag dich lieber selbst, was dich dazu bewogen hat, irgendwelche YT-Videos als Referenz zu nehmen,

Das werde ich nie begreifen: wie man tatsächlich Programmiersprachen per Videos lernen kann. Das wäre für mich nicht sinnvoll. Aber das ist hier OT.

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