Eine neue Lib im \lib-Verzeichnis ablegen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
AnalogBert
User
Beiträge: 5
Registriert: Dienstag 10. März 2009, 16:19
Wohnort: Bremen

Hallo Python-Fans,

bin Anfänger, aber nicht im Programmieren und auch nicht mit Computern, sondern nur noch paar Anfangsschwierigkeiten mit Python.

Habe ein python-Projekt übernommen.
Das läuft auch - komme gut klar damit, kann Änderungen machen usw.

Meine Struktur:
c:\python26 = die Python-Installation
d:\projekt = alles was mit dem Projekt zu tun hat.

Das Projekt benötigt imaging.1.1.6 - ok, hab ich mir besorgt.
Durch Ausprobieren hab ich herausgefunden, dass er die Module daraus dann verwendet, wenn ich alle enthalten py-Files nach c:\python26\lib kopiere.

Das ist aber wohl nicht die korrekte Methode, denn es gibt ja
in c:\python26\lib\... Unterverzeichnisse mit diversen Libs.
Da möchte ich ein Verzeichnis \image anlegen und alle Image-Files dort hinein kopieren.
Wenn ich das tue, dann findet er meine Image-Files aber nicht mehr.

Bin ja ein ordentlicher Mensch und will nicht einfach alle Libs, die ich so brauche direkt nach c:\python26\lib reinhauen.

Jemand einen Tip?

Dankeschön!
Bert
Zuletzt geändert von AnalogBert am Dienstag 10. März 2009, 22:07, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

PIL installiert man entweder über ``easy_install`` oder ``python setup.py install``. Auf Windows meist über die EXE-Installer.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
AnalogBert
User
Beiträge: 5
Registriert: Dienstag 10. März 2009, 16:19
Wohnort: Bremen

Ja, da ist eine setup.py dabei.

Habe ich so gemacht:

D:\temp\python\Imaging-1.1.6>python setup.py install
running install
running build
running build_py
running build_ext
building '_imaging' extension
error: None

Dann kommt aber beim Ausführen meines Projektes immer noch der Fehler:
"ImportError: No module named Image"

Diesen Fehler hatte ich nicht, als ich alle Files aus dem image-Paket stumpf nach c:\python26\lib kopiert habe - da lief mein Programm nämlich.

Und nu?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du brauchst vermutlich einen Compiler um die Bindings an die libjpeg und libpng zu kompilieren. Nimm doch einfach die fertigkompilierten Versionen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
AnalogBert
User
Beiträge: 5
Registriert: Dienstag 10. März 2009, 16:19
Wohnort: Bremen

Hmm... also Danke für Deine super schnellen Antworten, aber...

Wenn ich die *.py Dateien aus dem Image-Paket manuell nach c:\python26\lib kopiere und dann nach d:\projekt gehe, dort eingebe:
"python projekt.py"
dann klappert er ne Weile und mein Projekt läuft.
Es stehen danach in c:\python26\lib jede Menge *.pyc-Dateien (die compilierten Versionen, wie ich hier gelernt habe).
Auf diese Weise geht es also und ein Compiler ist dann doch wohl vorhanden, oder?

Ich hab mir aber in den Kopf gesetzt, die Image-Dateien doch bittschön in c:\python26\lib\image oder auch c:\python26\lib\pil stehen zu haben.
Einfach weil ich dann besser schlafen kann ;-)
Nee, weil ich es "richtig" machen möchte - denn ich fange ja gerade erst an mit Python - wer weiß was noch für große Projekte auf mich zukommen...

Nur das scheint er mit "python setup.py install" nicht zu tun.
Muss ich doch als Anfänger jetzt nicht das setup.py debuggen :shock: :?:
Wo liegt denn da mein Denkfehler???

Bert
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

AnalogBert hat geschrieben: Auf diese Weise geht es also und ein Compiler ist dann doch wohl vorhanden, oder?
Da wird es wohl um einen C-Compiler gehen!
Ich hab mir aber in den Kopf gesetzt, die Image-Dateien doch bittschön in c:\python26\lib\image oder auch c:\python26\lib\pil stehen zu haben.
Wieso? Willst Du eine Lib nutzen oder Dich an selbst ausgedachten Strukturen erfreuen? Wieso nutzt Du nicht die fertig kompilierten Versionen, wie Leonidas schon 2x vorgeschlagen hat?

Man kann sich das Leben auch unnötig schwer machen ;-)
AnalogBert
User
Beiträge: 5
Registriert: Dienstag 10. März 2009, 16:19
Wohnort: Bremen

Der Hinweis auf den Installer war der entscheidende Tip.

@Hyperion: Ich denke schon, dass es um einen Python-Compiler geht, und zwar deshalb:

Habe nämlich mal zusätzlich zu den Sourcen den Windows-Installer von imaging1.1.6 ausgeführt - vorher ein komplettes Backup von c:\python26 gemacht - und dann vorher/nachher verglichen - und siehe da:
Der Installer tut nichts weiter als seine eigenen *.py nach c:\python26\lib\site-packages\pil\ kopieren und compiliert sie dann alle in einem Rutsch nach c:\python26\lib\
Damit stehen die ausführbaren Libs (*.pyc) da wo sie gefunden werden können und die Sourcen stehen schön übersichtlich in einem eigenen Sub.

Und: Mein Projekt läuft :D

Als nächstes muss ich herausfinden, wie ich aus meinem Projekt eine EXE erstellen kann, aber das gehört nicht mehr hierher.

Also ein großes DANKESCHÖN!
Jetzt kann ich ruhig schlafen ;-)
Bert

/close
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

AnalogBert hat geschrieben: @Hyperion: Ich denke schon, dass es um einen Python-Compiler geht, und zwar deshalb:
Es gibt keinen Python-Compiler!
[wiki]FAQ#WoGibtEsEinenPythonCompiler[/wiki]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hyperion hat geschrieben:Es gibt keinen Python-Compiler!
Doch, den gibt es durchaus. Er kompiliert Python-Code zu Python-Bytecode (der in den pyc/pyo-Dateien abgelegt wird), der dann von der Python VM ausgeführt wird. Das ist nicht das was die meisten Leute unter einem Compiler verstehen, aber doch durchaus ein richtiger Compiler.

Aber um den ging es mir nicht. Das py-Dateien zu pyc-Dateien umgewandelt sind stimmt durchaus, aber es gibt in Python die Möglichkeit Module in C/C++ zu schreiben von was eben insbesondere bei Anbindung zu C-Libraries wie der zlib, libpng, libjpeg, libtiff etc. gebraucht gemacht wird. Um solche Module dann aus dem Quelltext zu installieren braucht man sowohl einen C oder C++ Compiler wie GCC oder Visual C++ sowie die Headerdateien. Sowas ist unter Windows jedoch eher selten und daher sind die Installer/Eggs mit bereits kompilierten Versionen der C-Module zu bevorzugen.

Module die keiner kompilation bedaürfen kann man tatsächlich einfach so in ``site-packages`` werfen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Leonidas hat geschrieben:
Hyperion hat geschrieben:Es gibt keinen Python-Compiler!
Doch, den gibt es durchaus. Er kompiliert Python-Code zu Python-Bytecode (der in den pyc/pyo-Dateien abgelegt wird), der dann von der Python VM ausgeführt wird. Das ist nicht das was die meisten Leute unter einem Compiler verstehen, aber doch durchaus ein richtiger Compiler.
Ok, ich hätte das besser relativiert!
AnalogBert
User
Beiträge: 5
Registriert: Dienstag 10. März 2009, 16:19
Wohnort: Bremen

Leonidas hat geschrieben:Module die keiner kompilation bedürfen kann man tatsächlich einfach so in ``site-packages`` werfen.
``Werfen`` bedeutet allerdings zwei Dinge:
1. Die py-Module in ein Verzeichnis kopieren
z.B. nach c:\python26\lib\site-packages\pil\
2. eine PTH-Datei anlegen
z.B. c:\python26\lib\site-packages\pil.pth
einziger Inhalt: der neue Verzeichnisname, z.B.
PIL

Dann findet der "compiler" die.

Bert


PS: Compiler, Builder, Linker... die Unterschiede sind schon klar, aber hier ja nicht wichtig. Es geht doch darum Programme, die mit dem Quellcode irgendwas machen, zufriedenzustellen. Egal ob daraus nun Zwischencode oder Byte-Code oder EXE oder DLL oder sonstwas wird.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

AnalogBert hat geschrieben:``Werfen`` bedeutet allerdings zwei Dinge:
1. Die py-Module in ein Verzeichnis kopieren
z.B. nach c:\python26\lib\site-packages\pil\
2. eine PTH-Datei anlegen
z.B. c:\python26\lib\site-packages\pil.pth
einziger Inhalt: der neue Verzeichnisname, z.B.
PIL
Jein. Bei vielen Libs die nur aus einem Modul/Package bestehen braucht man keine PTH-Dateien, man kann sie einfach so in ``site-packages`` ablegen (natürlich muss die Moduldatei/der Modulordner richtig benannt sein). Finde ich auch besser so, da dann der ``sys.path`` nicht so ewig lang wird wie eben ``setuptools`` das leider machen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten