Seite 1 von 1

Der richtige Platz für eigene Module

Verfasst: Samstag 28. August 2010, 17:53
von numerix
Der Hintergrund: Ein einzelnes Modul, das wiederum nur builtin-Module benötigt (tkinter zähle ich jetzt mal dazu) soll an der "richtigen" Stelle abgelegt werden, und zwar so, dass es auch für unerfahrere Benutzer einfach möglich ist.
Bisher (das letzte Mal, wo ich das brauchte, ist schon eine Weile her) habe ich dafür einfach den site-packages Ordner verwendet und alles war gut (Python 2.5)
Wollte ich heute auch so machen (Python 2.6, Ubuntu): Gibt keinen site-packages Ordner. Ok, habe ich es in den lib-tk Ordner mit hineingepackt; ist nicht schön, aber anderen einfach zu erklären und ist ja auch nur 1 Datei.
Wollte ich dann auch für Python 3.1 (Ubuntu) so machen. Gibt weder site-packages Ordner noch lib-tk Ordner. Ok, habe ich es in den tkinter Ordner gepackt. Import funktioniert nicht. Muss nun stattdessen als "import tkinter.mymodule" importiert werden. Gefällt mir nicht.

Dazu nun vier Fragen:
- Gibt es den site-packages Ordner überhaupt nicht mehr oder fehlt der einfach bei den Ubuntu-Paketen?
- Hat das offizielle Python 3.1 für Windows noch einen site-packages Ordner?
- Wenn es den Ordner nicht mehr gibt: Wo ist dann der richtige Ort für so ein einzelnes Modul?
- Ist dieser "richtige" Ort betriebssystemunabhängig, zumindest was Windows und die großen Linux Distributionen angeht?

Re: Der richtige Platz für eigene Module

Verfasst: Samstag 28. August 2010, 18:11
von gkuhl
Ich habe in Ubuntu 10.04 einen leeren "site-packages"-Ordner unter "/usr/local/lib/python2.6". Dort gibt's auch "dist-packages" wo scheinbar alles landet, was mit "easy_install" installiert wird. Für Py3k gibts "/usr/local/lib/python3.1".

Grüße
Gerrit

Re: Der richtige Platz für eigene Module

Verfasst: Samstag 28. August 2010, 18:31
von numerix
Damit ist eine Frage schonmal beantwortet: den site-packages Ordner gibt es noch.
Aber: Mit dem schlichten Hineinkopieren meiner einen kleinen Moduldatei scheint es nicht getan zu sein. Das Modul wird nicht erkannt ...
Wichtig wäre für mich vor allem die "Windows-Lösung", zumal ich die in Ermangelung eines Windows-Rechners nicht selbst testen kann.

Re: Der richtige Platz für eigene Module

Verfasst: Samstag 28. August 2010, 18:51
von gkuhl
Wieso verwendest du nicht den Standardweg mit Python Distribution Utilities?

Re: Der richtige Platz für eigene Module

Verfasst: Samstag 28. August 2010, 18:55
von numerix
Weil ich es NOCH einfacher will. :)
Ich will dem potentiellen Nutzer nur sagen: "Nimm diese eine Datei und kopiere sie genau dorthin."
Und dann soll es funktionieren ...

Re: Der richtige Platz für eigene Module

Verfasst: Samstag 28. August 2010, 19:06
von cofi
Nunja ... `python setup.py install` ist jetzt nicht sonderlich schwierig, v.a. muss sich der Nutzer dann nicht merken wohin er das kopieren muss.

Ansonsten ist jeder Ordner in `sys.path` passend :)
Auf meinem Debian ist `site-packages` auch nicht darin.

Re: Der richtige Platz für eigene Module

Verfasst: Samstag 28. August 2010, 19:35
von numerix
cofi hat geschrieben:Nunja ... `python setup.py install` ist jetzt nicht sonderlich schwierig, v.a. muss sich der Nutzer dann nicht merken wohin er das kopieren muss.
Für die Leute, um die es geht, IST das schwierig, weil die noch nie im Leben eine Konsole geöffnet haben.
Da ist IDLE praktisch synonym zu Python ...
cofi hat geschrieben:Ansonsten ist jeder Ordner in `sys.path` passend :)
Sicher, aber ich hatte gehofft, es gäbe noch den einen kanonischen Ordner (für den ich site-packages immer gehalten habe) für solche Fälle, aber das scheint ja nicht so zu sein.

Wäre nett, wenn mal jemand den sys.path einer naturbelassenen Windows-Python 3.1 Installation posten könnte ...

Re: Der richtige Platz für eigene Module

Verfasst: Samstag 28. August 2010, 19:41
von DasIch
numerix hat geschrieben:Für die Leute, um die es geht, IST das schwierig, weil die noch nie im Leben eine Konsole geöffnet haben. Da ist IDLE praktisch synonym zu Python ...
Das sind Dinge die ohnehin gelernt werden müssen, solche grundlegenden Fähigkeiten sollte man im vorraus lernen sonst kann man sich beim Tutorial selbst nicht aufs wesentliche konzentrieren.

Außerdem ist sowas wie einfach Dateien nach site-packages zu kopieren mehr als nur unschön, gerade in einem Tutorial sollte man sowas auf keinen Fall machen. Wenn sowas in Tutorials auftaucht, werden die beim nächsten nicht trivialen Problem gleich hier auftauchen und man muss sie aufklären über alles was sie bisher "falsch" gemacht haben, dass kann nicht das Ziel sein.

Re: Der richtige Platz für eigene Module

Verfasst: Samstag 28. August 2010, 23:19
von fhoech
Um die Frage zu Python 3.1 (bzw. allgemein Python) unter Windows zu beantworten: Hier ist der Pfad bei einer Standardinstallation C:\PythonXY\Lib\site-packages (XY dann jeweils die Python-Version ohne Punkt zwischen Major/Minor)

Bei Debian-basierten Systemen ist das ganze etwas komplex, /usr/lib/pythonX.Y/site-packages (für Python <= 2.5) respektive /usr/lib/pythonX.Y/dist-packages (für Python >= 2.6) ABER nur für alles was per Synaptic bzw. APT installiert wird. Eine Besonderheit gibt es hierbei noch: Module, die in mehreren Python-Versionen verfügbar sein sollen, kommen in /usr/share/pyshared (die Module sollten dann auch in pythonX.Y/*-packages gelinkt werden).
pip/easy_install etc. nutzen /usr/local/lib/pythonX.Y/site-packages (für Python <= 2.5) respektive /usr/local/lib/pythonX.Y/dist-packages (für Python >= 2.6), wurde ja schon genannt.
(Quelle: Debian Python Policy, Module Path)

Also ich tendiere da ja auch stark zu distutils/setup.py (man könnte das ja evtl. auch so deichseln, dass das Modul - wenn als Skript aufgerufen, also z.B. per Doppelklick - selbst prüft, ob es bereits installiert wurde, und wenn nicht, eben eine Standard-distutils-Installation vornimmt? So könntest Du Dir die setup.py sparen, wäre halt etwas Overhead im Modul)

Re: Der richtige Platz für eigene Module

Verfasst: Sonntag 29. August 2010, 10:30
von cofi
numerix hat geschrieben:Für die Leute, um die es geht, IST das schwierig, weil die noch nie im Leben eine Konsole geöffnet haben.
Nunja, da waere noch die Moeglichkeit das per BAT/Shell-Skript aufzurufen, ersteres ist unter Windows mit Doppelklick aufrufbar, letzteres unter den meisten Desktop-Umgebungen unter Unixen auch.

Re: Der richtige Platz für eigene Module

Verfasst: Sonntag 29. August 2010, 14:49
von numerix
fhoech hat geschrieben:Um die Frage zu Python 3.1 (bzw. allgemein Python) unter Windows zu beantworten: Hier ist der Pfad bei einer Standardinstallation C:\PythonXY\Lib\site-packages (XY dann jeweils die Python-Version ohne Punkt zwischen Major/Minor)
Danke!

Re: Der richtige Platz für eigene Module

Verfasst: Montag 30. August 2010, 11:43
von noisefloor
Hallo,

bei Ubuntu heißt der Order seit Karmic (?) nicht mehr "site-packages" sondern "dist-packages".

Gruß, noisefloor

Re: Der richtige Platz für eigene Module

Verfasst: Montag 30. August 2010, 18:30
von Leonidas
noisefloor hat geschrieben:bei Ubuntu heißt der Order seit Karmic (?) nicht mehr "site-packages" sondern "dist-packages".
Das liegt nicht an Karmic sondern am Ubuntu/Debian Python 2.6 Package.