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?
Der richtige Platz für eigene Module
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
Grüße
Gerrit
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.
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.
Wieso verwendest du nicht den Standardweg mit Python Distribution Utilities?
- 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.
Ansonsten ist jeder Ordner in `sys.path` passend
Auf meinem Debian ist `site-packages` auch nicht darin.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Für die Leute, um die es geht, IST das schwierig, weil die noch nie im Leben eine Konsole geöffnet haben.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.
Da ist IDLE praktisch synonym zu Python ...
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.cofi hat geschrieben:Ansonsten ist jeder Ordner in `sys.path` passend
Wäre nett, wenn mal jemand den sys.path einer naturbelassenen Windows-Python 3.1 Installation posten könnte ...
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.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 ...
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.
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)
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)
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
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.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.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Danke!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)
- 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
bei Ubuntu heißt der Order seit Karmic (?) nicht mehr "site-packages" sondern "dist-packages".
Gruß, noisefloor
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das liegt nicht an Karmic sondern am Ubuntu/Debian Python 2.6 Package.noisefloor hat geschrieben:bei Ubuntu heißt der Order seit Karmic (?) nicht mehr "site-packages" sondern "dist-packages".
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice