Wie installiere ich ein Modul

Probleme bei der Installation?
Antworten
lianaK
User
Beiträge: 10
Registriert: Montag 27. Juli 2009, 21:23
Wohnort: kassel

Hallo bin Neuling mit Python und hab schon ein paar Übungen gemacht.. ua mit TK inter OK soweit..
Jetzt möchte ich ein Bild laden und Brauche Pil bzw pillow ist das das Gleiche? Wie installiere und öffne ich das Modul korrekt?
Danke Luana
save our souls
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Deine Suchwörter lauten "pip" und ggf. "venv" oder "virtual env".
Der Package Indey von Python heißt PyPI.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@lianaK: PIL wird nicht mehr weiterentwickelt, Pillow führt das Projekt fort. Also in dem Sinne ist das das Gleiche, aber PIL würde man nicht mehr installieren. Pillow heisst das Package was man installiert, das Modul das man importieren muss, heisst aber weiterhin PIL.

Falls man auf Linux unterwegs ist, kann es auch Sinn machen das über die Pakete der Linux-Distribution zu installieren. Dann hat man das systemweit installiert, ohne die Gefahr sich das System durch eine Fremdquelle kaputt zu machen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
lianaK
User
Beiträge: 10
Registriert: Montag 27. Juli 2009, 21:23
Wohnort: kassel

Danke fürs Feedback :) aber ihr seid zu schnell

Habe das riesige pillow 10.2 runtergeladen und in Lib site-packages kopiert.. was nun?

Ich will auch später Mal eine exe Datei erstellen hab dafür Auto,-py-to-exe auch gefunden vom Download und in den Site packages Ordner kopiert

Pip habe ich auch dahin kopiert und _init,_ geöffnet und Run Module gedrückt .. was nun?

Und Last Not least habe ich auch ply 3.11 dorthin kopiert

Danke liana

Ich habe Python ,3.12 Windows
save our souls
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Nein, du bist zu schnell.
Wenn du Dinge per Hand kopiert hast, war das falsch. Dafür gibt es pip.
lianaK
User
Beiträge: 10
Registriert: Montag 27. Juli 2009, 21:23
Wohnort: kassel

Danke Schritt für Schritt bitte :)

Was mache ich mit pip?
save our souls
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Module installieren.
Das war deine Frage. Die Begriffe, über die du dich informieren solltest, habe ich dir in der ersten Antwort genannt.
Die sind alle gut dokumentiert.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@lianaK: `pip` ist ein Modul das bei Python in der Standardbibliothek enthalten ist und dementsprechend auch in der Python-Dokumentation beschrieben wird. Und deshalb ist „Pip habe ich auch dahin kopiert […]“ etwas eigenartig. Von wo und warum? Das ist ja schon da wo es hingehört wenn man Python installiert hat.

An den Python-Verzeichnissen sollte man nicht selbst Änderungen vornehmen, an den dazu vorgesehenen Werkzeugen wie `pip` vorbei.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
lianaK
User
Beiträge: 10
Registriert: Montag 27. Juli 2009, 21:23
Wohnort: kassel

Danke nochmals hab einiges gelesen und auch zwei Module geladen pip Install pillow auf der commandozeile ;)

Hab ein Bild geladen
From Pil import Image
Image= Image.open("frau.jpg")

Dann bekomme ich eine Error Message etwas mit Module pil.image Line 37 default_image.thumbnsil etc und Antialias ist wohl das Problem

Gruss liana
save our souls
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Ist in dem Post eine Frage?
Falls ja: Zeige bitte immer den Code, den du auführtst (genau so, wie du ihn ausführst) in Code-Tags. Code-Tags erscheinen automatisch wenn du im "vollständigen Editor" den </> Button drückst.

Gleiches gilt auch für die Fehlermeldung. Die exakte Fehlermeldung ebenfalls in einem Code-Block.
lianaK
User
Beiträge: 10
Registriert: Montag 27. Juli 2009, 21:23
Wohnort: kassel

Hallo zusammen :)

Habe diese uebung mit einem Bild zu laden gemacht
Bekomme aber stets diese Fehlermeldung Warum?

Code: Alles auswählen

import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk

def overlay_text(image_label, text, position, font=("Helvetica", 16), color="white"):
    # Create a transparent overlay
    overlay = tk.Label(image_label, text=text, font=font, bg="black", fg=color)
    overlay.place(**position, anchor="nw")

def load_image():
    global photo
    file_path = filedialog.askopenfilename(filetypes=[("Image Files", "*.png;*.jpg;*.jpeg")])
    if file_path:
        image = Image.open(file_path)

        # Resize the image based on height
        desired_height = 400  # Set your desired height here
        height_percent = (desired_height / float(image.size[1]))
        new_width = int((float(image.size[0]) * float(height_percent)))
        image.thumbnail((new_width, desired_height), Image.ANTIALIAS)

        photo = ImageTk.PhotoImage(image)
        image_label.config(image=photo)

# Create the main window
root = tk.Tk()
root.title("Image with Transparent Text")

# Load the default image # c:\aPython24\Python312-32
default_image_path = "C:\aPython24\Python312-32\frniem50.jpg"  #'' "your_default_image_path.jpg"
default_image = Image.open(default_image_path)
#default_image.show()

# Resize the default image based on height
desired_height = 400  # Set your desired height here
height_percent = (desired_height / float(default_image.size[1]))
new_width = int((float(default_image.size[0]) * float(height_percent)))
default_image.thumbnail((new_width, desired_height), Image.ANTIALIAS)

photo = ImageTk.PhotoImage(default_image)

# Create a label to display the image
image_label = tk.Label(root, image=photo)
image_label.pack()

# Overlay transparent text
overlay_text(image_label, "Your Model", position={"x": 50, "y": 50})

# Create a button to load another image
load_button = tk.Button(root, text="Load Image", command=load_image)
load_button.pack()

root.mainloop()



= RESTART: C:\aPython24\Python312-32\load-imageneu1.py
Traceback (most recent call last):
  File "C:\aPython24\Python312-32\load-imageneu1.py", line 31, in <module>
    default_image = Image.open(default_image_path)
  File "C:\aPython24\Python312-32\Lib\site-packages\PIL\Image.py", line 3247, in open
    fp = builtins.open(filename, "rb")
OSError: [Errno 22] Invalid argument: 'C:\x07Python24\\Python312-32\x0crniem50.jpg'
Bitte um Hilfe was ich falsch mache danke
save our souls
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Backslashes in Zeichenketten haben eine spezielle Bedeutung.
Hier wird das ganz gut beschrieben.
Das Einfachste: Verwendung einen Slash (/) als Pfadtrenner verwenden.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@lianaK: Anmerkungen zum Quelltext:

Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst.

Funktionen (und Methoden) bekommen alles was sie ausser Konstanten benötigen als Argument(e) übergeben.

``global`` hat in einem sauberen Programm nichts zu suchen.

Kommentare sollen dem Leser einen Mehrwert über den Code geben. Faustregel: Kommentare beschreiben nicht *was* der Code macht, denn das steht da bereits als Code, sondern warum er das macht. Sofern das nicht offensichtlich ist. Offensichtlich ist in aller Regel auch was in der Dokumentation von Python und den verwendeten Bibliotheken steht.

Der Code zum laden und ändern der Grösse eines Bildes ist fast 1:1 kopiert. Solche Wiederholungen sind unnötige Arbeit und fehleranfällig, weil man bei Veränderungen immer beide Kopien ändern muss und das auf eine äquivalente Art. Das würde man in eine Funktion herausziehen.

Die `float()`-Aufrufe sind überflüssig. Das sind schon Zahlen und ``/`` hat Gleitkommazahlen als Ergebnis.

`ANTIALIAS` gibt es in aktuellen Versionen von Pillow nicht mehr.

Bei `overlay_text()` stimmen die Kommentare nicht. Da ist nix transparent!

Code: Alles auswählen

#!/usr/bin/env Python3
import tkinter as tk
from functools import partial
from tkinter import filedialog

from PIL import Image, ImageTk


def load_image(label, file_path):
    image = Image.open(file_path)
    desired_height = 400
    image.thumbnail(
        (int(image.size[0] * desired_height / image.size[1]), desired_height),
        Image.LANCZOS,
    )
    photo = ImageTk.PhotoImage(image)
    label.image = photo
    label["image"] = photo


def overlay_text(
    image_label, text, position, font=("Helvetica", 16), color="white"
):
    tk.Label(image_label, text=text, font=font, bg="black", fg=color).place(
        **position, anchor=tk.NW
    )


def do_load_image(label):
    file_path = filedialog.askopenfilename(
        filetypes=[("Image Files", ("*.png", "*.jpg", "*.jpeg"))]
    )
    if file_path:
        load_image(label, file_path)


def main():
    root = tk.Tk()
    root.title("Image with Transparent Text")

    image_label = tk.Label(root)
    image_label.pack()
    load_image(image_label, R"C:\aPython24\Python312-32\frniem50.jpg")
    overlay_text(image_label, "Your Model", position={"x": 50, "y": 50})

    tk.Button(
        root, text="Load Image", command=partial(do_load_image, image_label)
    ).pack()
    root.mainloop()


if __name__ == "__main__":
    main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
lianaK
User
Beiträge: 10
Registriert: Montag 27. Juli 2009, 21:23
Wohnort: kassel

@blackjack vielen Dank für die Infos über Module und dein Codebeispiel das werde ich testen :) einige Module laufen jetzt bei mir andere nicht weil ich einige Fehler bei der Installation gemacht habe :-D

Evtl sollte ich Python 3.12 deinstallieren wenn das so einfach geht

Frohes Osterfest noch bei uns gibt's heute Sonnenschein , danke liana
save our souls
oldboyJR
User
Beiträge: 26
Registriert: Donnerstag 28. März 2024, 16:19

Ich habe gelesen das man in Spyder(python id) nicht den PIP befehl benutzen soll wenn man Spyder mit Anaconda installiert hat. PIP soll dann nicht vollständig laden. Man soll dann besser im anaconda das Promt lounchen und dort "conda install (modulname)"eingeben.
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

oldboyJR hat geschrieben: Montag 1. April 2024, 17:27 Ich habe gelesen das man in Spyder(python id) nicht den PIP befehl benutzen soll wenn man Spyder mit Anaconda installiert hat. PIP soll dann nicht vollständig laden. Man soll dann besser im anaconda das Promt lounchen und dort "conda install (modulname)"eingeben.
Wo in diesem Thread war von Anaconda und/oder Spyder die Rede? Ich finde keine entsprechende Stelle.
Antworten