staging.inyokaproject.org

venv - richtig anwenden

Status: Gelöst | Ubuntu-Version: Kubuntu 24.04 (Noble Numbat)
Antworten |

Nobuddy

Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Hallo zusammen, programmiere mit python, um den Kopf ein bischen fit zu halten.

Ich benötige Python Module, die in den offiziellen Ubuntu-Quellen nicht verfügbar sind.

z.B: translate, detectlanguage, pdf2image ... und noch ein paar weitere. Diese hatte ich mit pip https://wiki.ubuntuusers.de/pip/ installiert. Hatte vor 24.04 prima funktioniert, bis dann "pep 668" dies nicht mehr möglich machte.

Der neue Weg, ist ja mit venv https://wiki.ubuntuusers.de/venv/, eine virtuelle Python-Umgebung zu schaffen, in dem dann die zusätzlichen Python-Module installiert werden können.

Ich habe das Wiki von venv angewendet und die benötigten Programme mit pip installiert.

Bei pdf2image ist das entsprechende Modul in der virtuellen Python-Umgebung da. Leider gibt es beim Import "from pdf2image import convert_from_path" einen ModuleNotFoundError erzeugt.

Hier die Ausgabe der installierten Modulen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
pip list
Package            Version
------------------ -----------
certifi            2024.8.30
charset-normalizer 3.3.2
ci-info            0.3.0
click              8.1.7
configobj          5.0.9
configparser       7.1.0
detectlanguage     1.5.0
etelemetry         0.3.1
filelock           3.16.1
fitz               0.0.1.dev2
httplib2           0.22.0
idna               3.10
isodate            0.6.1
libretranslatepy   2.1.1
looseversion       1.3.0
lxml               5.3.0
networkx           3.3
nibabel            5.3.0
nipype             1.8.6
numpy              2.1.2
packaging          24.1
pandas             2.2.3
pathlib            1.0.1
pdf2image          1.17.0
pillow             10.4.0
pip                24.0
prov               2.0.1
pydot              3.0.2
pyparsing          3.1.4
python-dateutil    2.9.0.post0
pytz               2024.2
pyxnat             1.6.2
rdflib             6.3.2
requests           2.32.3
scipy              1.14.1
simplejson         3.19.3
six                1.16.0
traits             6.3.2
translate          3.6.1
typing_extensions  4.12.2
tzdata             2024.2
urllib3            2.2.3

In meinen py-Modulen, füge ich den venv-Pfad sys hinzu, das hatte bei 22.04 noch funktioniert.

1
2
import sys
sys.path.append('/home/user/venv/bin/python')

Was kann ich tun?

Grüße Nobuddy

Bearbeitet von rklm:

Schreibfehler im Titel korrigiert

claus56

Anmeldungsdatum:
24. Dezember 2019

Beiträge: 172

Ich habe gerade eben unter venv pdf2image mit pip install pdf2image installiert und

from pdf2image import convert_from_path 

ausgeführt. Ich bekomme keinen modul not found error. Habe Python 3.12.3 laufen.

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Hallo claus56,

Danke für Deine Info!

Habe auch Python 3.12.3 laufen. Da ist irgendwas falsch gelaufen.

Im venv Wiki steht, dass man ohne Probleme den Ordner ~/venv löschen kann. Gibt es nach der Löschung des Ordners noch Überbleibsel, die auch noch gelöscht / bearbeitet werden müssen?

Grüße Nobuddy

claus56

Anmeldungsdatum:
24. Dezember 2019

Beiträge: 172

Mal eine dumme Frage: hast Du vielleicht beim from .... import ... vergessen vorher source env/bin/activate auszuführen (das ist mein Pfad bei Dir wahrscheinlich anders).

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4450

Nobuddy schrieb:

Gibt es nach der Löschung des Ordners noch Überbleibsel, die auch noch gelöscht / bearbeitet werden müssen?

Im Pip-Cache könnte was sein: https://pip.pypa.io/en/stable/cli/pip_cache/

Jenachdem, welche Anwendungen man ausführt, kann Zeugs nachgeladen werden und sonstwo landen, etwa KI-Modelle hier: .cache/huggingface/. Das merke ich mir und entferne die Dateien, wenn ich auch das venv lösche. Manchmal lässt sich der Downloadordner für Modelle/anderes aber auch z.B. per Umgebungsvariable oder Programoption anpassen.

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

"source env/bin/activate" habe ich im Terminal gemacht. Ist das evtl. bei jedem py-Modul auszuführen?

claus56

Anmeldungsdatum:
24. Dezember 2019

Beiträge: 172

nein source ... aktiviert ja nur Deine env Umgebung. Nach dem source wird pip install <modul> installiert und auch der Python Code ausgeführt

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Hallo verdooft,

Danke für den Link!

Werde den venv-Ordner löschen und .cache/pip umbenennen und dann nochmals alles durchführen.

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4450

.cache/pip umbenennen ist eigentlich nicht notwendig, lässt man es, werden Module/Dateien dort geholt (statt nochmal neu heruntergeladen).

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Neu aufgesetzt und bei pdf2image kommt wieder der ModuleNotFoundError.

Kann es sein dass die pip Installation von Programmen mit "--user" installiert werden muss?

Bei Ausgabe pip3 list --user, kommt nichts. Bei pip3 list, bekomme ich diese Ausgabe:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
pip3 list
Package            Version
------------------ -----------
certifi            2024.8.30
charset-normalizer 3.4.0
ci-info            0.3.0
click              8.1.7
configobj          5.0.9
configparser       7.1.0
detectlanguage     1.5.0
etelemetry         0.3.1
filelock           3.16.1
fitz               0.0.1.dev2
httplib2           0.22.0
idna               3.10
isodate            0.6.1
libretranslatepy   2.1.1
looseversion       1.3.0
lxml               5.3.0
networkx           3.3
nibabel            5.3.0
nipype             1.8.6
numpy              2.1.2
packaging          24.1
pandas             2.2.3
pathlib            1.0.1
pdf2image          1.17.0
pillow             10.4.0
pip                24.0
prov               2.0.1
pydot              3.0.2
pyparsing          3.1.4
python-dateutil    2.9.0.post0
pytz               2024.2
pyxnat             1.6.2
rdflib             6.3.2
requests           2.32.3
scipy              1.14.1
simplejson         3.19.3
six                1.16.0
traits             6.3.2
translate          3.6.1
typing_extensions  4.12.2
tzdata             2024.2
urllib3            2.2.3

claus56

Anmeldungsdatum:
24. Dezember 2019

Beiträge: 172

also ich mache nur

pip install pdf2image

im dem env Verzeichnis und env Umgebung. Im Terminal sollte am prompt (env).... stehen,

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Ja, so mache ich es auch. Hm, das ist komisch.

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4450

Entscheidend ist, dass du die Pythonmodule, oder das Programm, das sie nachzieht, im venv installierst. --user oder systemweit braucht es in dem Fall gar nicht, weil du das ja im aktiven venv erledigst.

Bring mal Schritt für Schritt, was du machst.

Ich gehe so vor:

1.) Python venv erstellen mit

python3 -m venv /home/BENUTZER/anwendung/venv

2.) Aktivieren der virtuellen Pythonumgebung

source /home/BENUTZER/anwendung/venv/bin/activate

3.) Eigentlich wechsle ich vor 2. noch in das Verzeichnis, geht aber auch jetzt noch

cd /home/BENUTZER/anwendung/

4.) Installation von Pythonmodulen im aktiven venv

pip install irgendwas

5.) Falls ein eigenes Programm ausgeführt werde soll, erstelle ich das dann in dem Verzeichnis (oberhalb des venv-Ordners, prinzipiell gehts aber auch an völlig anderen Orten)

nano meinprogramm.py
Source reintippseln
Strg+x -> Y - für Ja, speichern.

6.) Ausführen des Programmes, während des venv aktiv ist (sieht man am Prompt im Terminal, etwa:

(venv) linux@nb0:/home/BENUTZER/anwendung$ python meinprogramm.py

venv kann logscherweise auch env sein, ich habs jetzt nach meinen Gewohnheiten erledigt.

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Die Vorgehensweise habe ich auch so gemacht.

1
2
(venv) odin@odin:~$ python pdf2image.py
python: can't open file '/home/odin/pdf2image.py': [Errno 2] No such file or directory

Die Pfadangabe ist falsch, müsste heißen /home/odin/venv/lib/python3.12/site-packages/pdf2image.

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4450

Achso, die Datei ist auch nicht zum direkten Ausführen gedacht, man bindet das Modul in eigenen Programmen ein.

Antworten |