2009-05-11 13 views
4

Cela devrait être un scénario commun, mais n'a pas pu trouver un poste correspondant encore ..emplacement standard des ressources non-code pour les paquets python

Je prévois de déployer une bibliothèque Python (je suppose que le même pour les demandes régulières) qui utilise des images et d'autres fichiers de ressources. Quel est l'emplacement standard pour ces articles? J'imagine, pour le projet Foo, les choix seraient

  • Demandez répertoire resources dans le référentiel source, puis déplacer les fichiers vers /usr/share/foo/
  • place des ressources directement à l'intérieur du paquet python qui va sous /usr/lib/python-<version>/foo/

Aucune suggestion?

Editer: Comme suggéré, clarifiant que la plate-forme principale sur laquelle il sera exécuté est Linux.

Répondre

2

Cette question est quelque peu incomplète, car une bonne réponse dépend du système d'exploitation sous-jacent, car chacun a son propre mode opératoire. Dans Linux (et la plupart des systèmes d'exploitation basés sur Unix) par exemple/usr/share/foo ou/usr/local/share/foo serait la norme. Dans OS X, vous pouvez faire la même chose, mais je pense que "/ Library/Application Support/Foo" (bien que ce soit généralement pour stocker des paramètres et autres) serait l'endroit pour mettre de telles choses, mais si vous écrivez des bibliothèques suivant le "Framework" idée, toutes les ressources seraient incluses dans le /Bibliothèque/Frameworks/Foo.Framework "... Les applications sur OS X, d'autre part devrait garder toutes les ressources dans le répertoire ressources dans Foo.app

0

la norme emplacement est où votre libs norme va. Mais il ne. Je pense que le son de ne pas me de ce que vous avez écrit, que vous voulez que votre python il lib vous devriez essayer Virtualenv.

Si vous ne voulez pas traverser tous les problèmes (enfin, il vraiment revient juste sudo easy_install virtualenv pour vous), vous pouvez essayer de vider simplement votre lib python dans un répertoire dans votre ~/ et faire quelque chose le long des lignes de

import sys 
sys.path.append('/full/path/to/your/lib/goes/here') 

à toute application donnée qui utilise votre lib.

Veuillez noter que les exemples donnés sont uniquement à des fins de test. Pour quelque chose de live-ish, je vous recommande d'utiliser distutil. Des exemples d'utilisation sont donnés here.

2

Nous avons mis des fichiers non py dans /opt/foo/foo-1.2/...

Sauf, bien sûr, pour les médias statiques qui est servi par Apache, qui va à /var/www/html/foo/foo-1.1/media/...

Sauf, bien sûr, pour les fichiers de configuration spécifiques au client. Ils vont à /var/opt/customer/foo/...

Ceux-ci suivent les normes Linux telles que je les comprends.

Nous essayons de rester à l'écart de /usr/lib/ et /lib sortes d'emplacements, car ils ont l'impression de faire partie de la distribution. Nous nous penchons vers /opt et /var car ils sont clairement séparés des répertoires de distributions linux.