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
Eine neue Lib im \lib-Verzeichnis ablegen?
-
- User
- Beiträge: 5
- Registriert: Dienstag 10. März 2009, 16:19
- Wohnort: Bremen
Zuletzt geändert von AnalogBert am Dienstag 10. März 2009, 22:07, insgesamt 1-mal geändert.
-
- 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?
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?
-
- 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
-
- 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
Wo liegt denn da mein Denkfehler???
Bert
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
Wo liegt denn da mein Denkfehler???
Bert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Da wird es wohl um einen C-Compiler gehen!AnalogBert hat geschrieben: Auf diese Weise geht es also und ein Compiler ist dann doch wohl vorhanden, oder?
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?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.
Man kann sich das Leben auch unnötig schwer machen
-
- 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
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
@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
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
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.Hyperion hat geschrieben:Es gibt keinen Python-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
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ok, ich hätte das besser relativiert!Leonidas hat geschrieben: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.Hyperion hat geschrieben:Es gibt keinen Python-Compiler!
-
- User
- Beiträge: 5
- Registriert: Dienstag 10. März 2009, 16:19
- Wohnort: Bremen
``Werfen`` bedeutet allerdings zwei Dinge:Leonidas hat geschrieben:Module die keiner kompilation bedürfen kann man tatsächlich einfach so in ``site-packages`` werfen.
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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.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
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice