ubuntuusers.de

venv - richtig anwenden

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

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

verdooft, meinst Du dies damit:

1
2
import sys
sys.path.append('/home/odin/venv/lib/python3.12/site-packages/pdf2image/')

Ich erhalte dann beim Straten meines py-Moduls, diese Fehlermeldung:

1
2
3
4
5
6
Traceback (most recent call last):
  File "/media/odin/data/Addresses/Firma_NEW/JobPrinter.py", line 9, in <module>
    from pdf2image import convert_from_path
  File "/home/odin/venv/lib/python3.12/site-packages/pdf2image/pdf2image.py", line 17, in <module>
    from pdf2image.generators import uuid_generator, counter_generator, ThreadSafeGenerator
ModuleNotFoundError: No module named 'pdf2image.generators'; 'pdf2image' is not a package

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Info, habe den Dreh herausgefunden, zumindest läuft pdf2image durch. Habe auch noch fitz in meinem py-Modul, das jetzt anschlägt.

1
2
3
4
5
6
7
8
9
(venv) odin@odin:~$ /home/odin/venv/bin/python3 /home/odin/Addresses/Firma_NEW/JobPrinter.py
Traceback (most recent call last):
  File "/home/odin/Addresses/Firma_NEW/JobPrinter.py", line 7, in <module>
    import fitz
  File "/home/odin/venv/lib/python3.12/site-packages/fitz/__init__.py", line 1, in <module>
    from frontend import *
  File "/home/odin/venv/lib/python3.12/site-packages/fitz/frontend.py", line 5, in <module>
    from importlib import imp
ImportError: cannot import name 'imp' from 'importlib' (/usr/lib/python3.12/importlib/__init__.py). Did you mean: '_imp'?

Habe dann die fontend.py in fitz anzupassen, da imp durch importlib ersetzt wurde, ich imp durch importlib im frontend.py ersetzt, was momentan da nicht die Lösung ist.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
(venv) odin@odin:~$ /home/odin/venv/bin/python3 /home/odin/Addresses/Firma_NEW/JobPrinter.py
Traceback (most recent call last):
  File "/home/odin/Addresses/Firma_NEW/JobPrinter.py", line 7, in <module>
    import fitz
  File "/home/odin/venv/lib/python3.12/site-packages/fitz/__init__.py", line 1, in <module>
    from frontend import *
  File "/home/odin/venv/lib/python3.12/site-packages/fitz/frontend.py", line 10, in <module>
    from .tools import make_subject_source
ImportError: attempted relative import with no known parent package
(venv) odin@odin:~$ /home/odin/venv/bin/python3 /home/odin/Addresses/Firma_NEW/JobPrinter.py
Traceback (most recent call last):
  File "/home/odin/Addresses/Firma_NEW/JobPrinter.py", line 7, in <module>
    import fitz
  File "/home/odin/venv/lib/python3.12/site-packages/fitz/__init__.py", line 1, in <module>
    from frontend import *
  File "/home/odin/venv/lib/python3.12/site-packages/fitz/frontend.py", line 10, in <module>
    from importlib.tools import make_subject_source
ModuleNotFoundError: No module named 'importlib.tools'

Aber das ist wohl dann eine neue Baustelle 😉

Grüße Nobuddy

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Danke und und Grüße Nobuddy

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Nachtrag:

fitz funktionierte nicht mehr, da fitz veraltete Python-Module verwendet, habe ich die Lösung gefunden indem ich pymupdf in den venv installierte. Dies hat zur Folge, dass alter Code von fitz in meinen eigenen Python-Modulen wieder läuft.

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Eine Frage habe ich doch noch!

Das Ausführen meines Python-Moduls funktioniert mit dem Terminal:

1
/home/odin/venv/bin/python3 /home/odin/Addresses/Firma_NEW/Translater.py

Wie kann ich das direkt aus meinem Python-Modul machen, dass die benötigten Module aus venv importiert werden?

Das mit dem Zufügen der Pfade in sys.path funktioniert bei mir nicht.

.... Nachtrag: Das mit dem Zufügen der Pfade in sys.path funktioniert doch!

1
2
import sys
sys.path.append('/home/odin/venv/lib/python3.12/site-packages/')

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4661

Wohnort: Berlin

@Nobuddy An sys.path solltest Du überhaupt nicht rumfummeln. Du könntest den /home/odin/venv/bin/python3 Interpreter in die She-Bang-Zeile von der Translater.py schreiben. Oder ein Startershellskript, dass das Programm mit dem Python aus dem venv startet.

Antworten |