Seite 1 von 1

Wie raus aus der Thonny Umgebung?

Verfasst: Mittwoch 23. April 2025, 15:26
von ran
Ich bin jetzt Rentner von Beruf und habe damit viel Zeit, die ich befüllen muss. Da ich vor 2+ Jahrzehnten mal Programmiert habe, dachte ich, ich lerne was Neues und bastle mit eine Datenbank für den ganzen Papierkram, der so angefallen ist und weiter anfällt. Linux ist schon 20 Jahre her, eine neue Sprache wollte ich eh lernen, also python.

Als Editor hieß es im Netz immer: Nimm Thonny, ist klasse für Anfänger. Stimmt, aber jetzt, wo ich mich leidlich freigeschwommen habe und auf was umfangreicheres umsteigen will, habe ich das Problem.

Viele meiner Scripts arbeiten nicht mehr, da ich alle notwendigen Module und Bibliotheken über Thonny in dessen Welt installiert habe. Sicher ist das für versierte Coder kein Problem, ich hänge seit einer Woche dran, Sublime zu erzählen, wo es bereits installierte Sachen findet.

Beispiel, an dem ich zeigen kann, wo es hapert und anhand dessen mir freundlicher Weise jemand erklären kann, wo mein(e) Fehler ist/sind

Für Textrecherche in den Dokumenten hätte ich gerne OCR Einbindung. Tesseract war nach rumsuchen die Wahl. pytesseract war unter Thonny installiert und stieg dort (bis heute ungelöst) damit aus, dass Tesseract nicht gefunden wird. Als ich unter Sublime weiter machen wollte und pytesseract nicht gefunden wurde, dachte ich, mach ichs halt über einen Systemaufruf aus dem Script heraus, soll ja nur ein Bild in durchsuchbaren Text umgewandelt werden und als file gespeichert. Wow, darüber habe ich manches über Bibliotheken gelernt, aber was mich zur Verzweiflung bringt: Tesseract wird wunderbar im Terminal ausgeführrt, macht was es soll, wird mit und ohne Pfadangabe gefunden aber nicht im Scrip.

A) kann ich irgendwo im System einen link hin legen, dass andere Umgebungen das Thonny Verzeichnis auch so finden?
B) Wieso weiß die Shell wo tesseract liegt und keiner hat sonst Ahnung von den Pfad?

Ich befürchte, das hat alles mit der Thonny-Welt zu tun. Sorry für den langen Text, die nächsten werden sicher kürzer

Code: Alles auswählen

import sys
sys.path.insert(0, '/home/ran/.var/app/org.thonny.Thonny/data/python/lib/python3.12/site-packages/')
sys.path.insert(0, '/usr/bin/')
# Diese Verrenkung, weil pytesseract sonst nicht gefunden wird, tesseract liegt in /usr/bin
import pytesseract
import os
import subprocess
if os.system('tesseract --version') == 0:
    print("-------------------------")
    print("   tesseract gefunden!   ")
    print("-------------------------")
else:
    print("tesseract nicht gefunden.")
    print("-------------------------")
'''
bis hier läuft alles wie gewünscht, 
tesseract wird als gefunden angezeigt aber dann
'''
subprocess.run('/usr/bin/tesseract /home/ran/coding/projects/lernen1/bild.jpg /home/ran/coding/projects/lernen1/bild')
-------------------------
tesseract gefunden!
-------------------------
Traceback (most recent call last):
File "/home/ran/coding/projects/lernen1/import subprocess_sublime_und_idle_erfolgreich.py", line 18, in <module>
subprocess.run('/usr/bin/tesseract /home/ran/coding/projects/lernen1/bild.jpg /home/ran/coding/projects/lernen1/bild')
File "/usr/lib/python3.12/subprocess.py", line 548, in run
with Popen(*popenargs, **kwargs) as process:
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.12/subprocess.py", line 1955, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/tesseract /home/ran/coding/projects/lernen1/bild.jpg /home/ran/coding/projects/lernen1/bild'
[Finished in 193ms with exit code 1]
[cmd: ['python3', '-u', '/home/ran/coding/projects/lernen1/import subprocess_sublime_und_idle_erfolgreich.py']]
[dir: /home/ran/coding/projects/lernen1]
[path: /home/ran/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/gfie-4.3]

Re: Wie raus aus der Thonny Umgebung?

Verfasst: Mittwoch 23. April 2025, 20:14
von ran
Nachtrag:
ich habe mit

Code: Alles auswählen

$ export PYTONPATH="/home/ran/.var/app/org.thonny.Thonny/data/python/lib/python3.12/site-packages/'
$ source ~/.bashrc
versucht, den Pfad allen verfügbar zu machen, aber wenn ich ihn nicht mit sys.path.insert im Script aufrufe, wird pytesseract nicht gefunden

Re: Wie raus aus der Thonny Umgebung?

Verfasst: Mittwoch 23. April 2025, 20:44
von ran
Ah, ein Fehler gefunden, ich musste Argumente angeben, keinen String

Code: Alles auswählen

subprocess.run(['/usr/bin/tesseract', '/home/ran/coding/projects/lernen1/bild.jpg', '/home/ran/coding/projects/le
rnen1/bild'])

Re: Wie raus aus der Thonny Umgebung?

Verfasst: Donnerstag 24. April 2025, 10:24
von ran
So, über Nacht alles eingedampft bis auf das Urproblem, der Thonny Umgebung :roll:

Code: Alles auswählen

# Thonny Umgebung dem Script bekannt machen, also das Restproblem
import sys
sys.path.insert(0, '/home/ran/.var/app/org.thonny.Thonny/data/python/lib/python3.12/site-packages/')

from PIL import Image
import pytesseract
import os
import subprocess

# mittĺerweile funktioniert alles
pfad = '/home/ran/coding/projects/lernen1/'
scan = 'bild1.jpg'
textfile = 'bild'
# tesseract via Kommando
subprocess.run(['tesseract', scan, pfad+textfile])
# tesseract via pytesseract
print(pytesseract.image_to_string(Image.open(pfad+scan)))

Re: Wie raus aus der Thonny Umgebung?

Verfasst: Donnerstag 24. April 2025, 12:37
von kbr
Ja, das scheint das Problem: Thonny legt eine eigene Python-Installation an und bringt dort die Pakete unter. Das ist ein virtuelles Environment, das dem Einstiegs-User (u.a. die Zielgruppe von Thonny) verborgen bleibt. Wenn man dann auf einen anderen Editor umsteigt ohne dies zu wissen, gibt das nichts wie Ärger.

Statt im Python-Programm mit Pfaden zu hantieren ist es sinnvoller, selbst virtuelle Environments anzulegen. Das kann man mit Python selbst (venv aus der stdlib) oder mit einer (mittlerweile) Vielzahl von anderen Tools. Ich bevorzuge conda/mamba.

Schau dir mal das Stichwort "virtuelle environments" an. In Kombination von Sublime und dem Terminal wirst du damit sehr weit kommen. Dann brauchst du eigentlich nur noch git und bist bereits mit den wichtigsten Werkzeugen unterwegs.

Re: Wie raus aus der Thonny Umgebung?

Verfasst: Donnerstag 24. April 2025, 13:35
von ran
Vielen Dank für deine Antwort. Ich werde mit virtual environments mal genau anschauen. Conda ist mir schon mal untergekommen, hab mich allerdings noch nie damit beschäftigt und git steht somit auch auf meiner ToDo-Liste!

Re: Wie raus aus der Thonny Umgebung?

Verfasst: Donnerstag 24. April 2025, 14:15
von noisefloor
Hallo,

der Umgang mit venvs ist auch im Python-Tutorial erklärt. Ist auch nicht weiter schwierig.

Conda braucht man IMHO als "Normalprogrammierer" nicht. Wenn man Data Science macht oder sehr komplexe Abhängigkeiten hat, kann das vorteilhaft sein. Der aktuelle heiße Scheiß zur Verwaltung von venvs und Python-Modulen ist übrigens uv.

Gruß, noisefloor

Re: Wie raus aus der Thonny Umgebung?

Verfasst: Donnerstag 24. April 2025, 14:41
von ran
Danke für den Hinweis!
richie