Der richtige Platz für eigene Module

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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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?
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Wieso verwendest du nicht den Standardweg mit Python Distribution Utilities?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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 ...
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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 ...
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
fhoech
User
Beiträge: 143
Registriert: Montag 9. April 2007, 18:26

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)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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!
Benutzeravatar
noisefloor
User
Beiträge: 3857
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

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

Gruß, noisefloor
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten