[python-users] default config file erzeugen / mit installieren / vernünftig ablegen

Henning Dickten pycologne at blobhal.de
Mi Mär 5 09:06:53 CET 2014


Hallo zusammen!

Besten Dank für Eure Antworten! Das werde ich gleich mal ausprobieren,
welche Lösung mir da am besten gefällt. Ich denke ich werde die config in
das Paket mit einpflegen und dann darauf zugreifen - klingt nach einer
sinnvollen Lösung.
Auf meiner Suche bin ich auf appdirs gestoßen - eine Erweiterung für XDG,
was die entsprechenden Windows, OSX, Linux Pfade ausgibt:

https://pypi.python.org/pypi/appdirs

Ich weiß allerdings nicht, ob das Win 7+ User-Sprachproblem da drin gelöst
ist.

Beste Grüße

 Henning



Am 4. März 2014 19:39 schrieb Christopher Arndt <chris at chrisarndt.de>:

> Hallo Henning, hallo Thomas, hallo allerseits,
>
> Am 04.03.2014 18:54, schrieb Thomas Koch:
>
>  für das Home-Verzeichnis ist vermutlich
>>
>>  os.path.expanduser("~")
>>>>>
>>>>
>> 'C:\\Users\\koch'
>>
>> die schlankere Variante.
>>
>
> ich finde, das sollte kein modernes Programm mehr machen, es sein denn, es
> soll auch unter archaischen Unix-Varianten laufen. Ich finde es nicht die
> feine Art, wenn mir alle möglichen Programme mein Home-Verzeichnis
> zumüllen, und genau dafür gibt es ja die entspr. XDG-Standards.
>
>
> > Hier bin ich auch für Lösungen offen, bei denen ich keine zusätzliche
> > Abhängigkeit brauche.
>
> Es gibt für die versch. XDG-Standards bereits fertige
> Python-Implementierungen. Warum das Rad neu erfinden?
>
> Wenn man es richtig machen wollte, sollte man sich allerdings auch an die
> Standards in der Windows und OS X Welt halten. Ich kenne allerdings kein
> Programm, welches das ordentlich macht. Die plattformübergreifenden
> Frameworks wie z.B. Qt oder wxWindows haben meist ihre eigenen Konventionen
> und Libraries für das Konfigurationshandling.
>
> Ich habe mal ein Cookbook Recipe zum Finden entspr. Pfade auf Windows
> geschrieben. Inwieweit das noch auf die Gepflogenheiten seit Windows 7
> passt, kann ich aber nicht sagen.
>
> http://code.activestate.com/recipes/473846-get-
> systemlanguageuser-dependent-paths-on-windows/
>
> Falls jemand eine Pythonbibliothek kennt, die diese ganzen
> Konfigurationspfade plattformübergreifend und standardkonform ermittelt,
> wäre ich auch sehr daran interessiert.
>
>  - Alternativ könnte man auch die Config beim ersten Start eines
>> Programms erzeugen lassen. /
>>
>>
>> Das ist eigentlich auch nicht unüblich.
>>
>
> Ja, es gibt eine Zillion Programme, die das so macht. Es ist m.E. auch
> besser als eine zentrale Konfigdatei, die schon bei der Installation
> erstellt werden und beim Start des Programms vorhanden sein muss (Stichwort
> Application Bundles und Relocateable Apps).
>
> Eine Alternative zum automatischen Erzeugen eines Konfigurationsfiles wäre
> eine Kommandozeilenoption, um eine Defaultkonfiguration auf Standardout
> auszuspucken.
>
>  Gibt es hier die Möglichkeit, dass z.B. eine
>> my_project.conf.default in /usr/local/share/ (o.ä.) liegt, die genau
>> dorthin beim Setup kopiert wird?/
>>
>
> Diese Möglichkeit gibt es in distutils, das würde ich aber nicht
> empfehlen, da man dann Root-Rechte braucht, um das Paket zu installieren.
>
> http://docs.python.org/2/distutils/setupscript.html#
> installing-additional-files
>
> Besser ist, wie von Thomas schon vorgeschlagen, die Datei einfach mit in
> dein Python Package zu, äh, packen.
>
> http://docs.python.org/2/distutils/setupscript.html#
> installing-package-data
>
> bzw. komfortabler mit setuptools:
>
> http://pythonhosted.org//setuptools/setuptools.html#including-data-files
>
> Darauf zugreifen sollte man dann aber mit dem pkg_resources aus setuptools
> oder pkgutil.get_data() aus der Standardlib, damit es auch mit gezippten
> Packages funktioniert und generell dem (erweiterbaren) Python
> Importprotokoll entspricht.
>
> http://docs.python.org/2/library/pkgutil.html#pkgutil.get_data
>
> Falls du das nicht willst, gibt es mit setuptools/pkg_resources auch noch
> eine Möglichkeit, Dateien mit in ein Egg aber nicht in ein Python Package
> zu packen:
>
> http://pythonhosted.org//setuptools/setuptools.html#non-package-data-files
>
> Ob das auch mit Wheels geht, und ob das im Zusammenhang mit pip
> funktioniert, weiß ich nicht.
>
>
>  - Ein post-install skript konnte ich bisher nur erzwingen, indem ich die
>> "install"-Methode von setuptools überladen habe und weiteren Kram
>> ausführen lasse. Dies finde ich jedoch relativ hässlich. Gibt es hierfür
>> bereits Hausmittel in der Standard Library?
>>
>
> Wie gesagt, das würde ich sowieso nicht empfehlen, aber ich habe letztens
> bei der PyCologne in einem kurzen Talk vorgestellt, wie man in setup.py
> eigene setup Kommandos einbindet:
>
> http://trac.chrisarndt.de/code/wiki/distutils-extend
>
> Über setup.cfg kann man dann ein Kommando-Alias definieren, das 'install'
> und das eigene Kommando in einem Rutsch aufruft.
>
>
> Chris
> ________________________________________
>
> Diese Mail erhalten Sie ueber die Mailingliste python-users der
> Universitaet zu Koeln
> Nachrichten an: python-users at uni-koeln.de
> Abonnement und Benutzereinstellungen: https://lists.uni-koeln.de/
> mailman/listinfo/python-users
> Listenarchiv: https://lists.uni-koeln.de/pipermail/python-users/
>
> pyCologne Homepage: http://pycologne.de/
>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://lists.uni-koeln.de/pipermail/python-users/attachments/20140305/b32e5107/attachment.html>


Mehr Informationen über die Mailingliste python-users