emplacement standard des ressources non-code pour les paquets de python
Question
Cela devrait être un scénario commun, mais n'a pas pu trouver un poste correspondant encore ..
Je prévois de déployer une bibliothèque Python (je suppose que le même pour des applications 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
- Avoir dans le répertoire
resources
référentiel source, puis déplacer les fichiers vers/usr/share/foo/
- La place des ressources directement à l'intérieur du paquet python qui va sous
/usr/lib/python-<version>/foo/
Toutes les suggestions?
Edit:. Comme suggéré, précisant que la plate-forme principale ce sera en cours d'exécution sur Linux est
La solution
Cette question est quelque peu incomplète, car une bonne réponse dépendra du système d'exploitation sous-jacent, comme chacun a son propre mode de fonctionnement. Dans linux (et la plupart des systèmes d'exploitation 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 « / Library / Application Support / Foo » (bien que ce soit habituellement pour stocker les paramètres et autres joyeusetés) serait l'endroit idéal pour mettre de telles choses, mais si vous écrivez des bibliothèques suite à la idée « cadre », toutes les ressources seraient incluses dans le /Library/Frameworks/Foo.Framework » ... Apps sur OS X d'autre part devrait conserve toutes les ressources là-bas dans le répertoire des ressources à l'intérieur Foo.app
Autres conseils
Nous avons des fichiers non dans py /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/...
Les suivent les normes Linux comme je les comprends.
Nous essayons de rester loin de et /usr/lib/
sortes d'endroits /lib
parce que ceux qui se sentent comme ils font partie de la distribution. Nous penchez vers et /opt
parce qu'ils sont /var
clairement séparés des répertoires distro linux.
standard est l'emplacement où va votre libs standard. Mais il ne semble pas à moi de ce que vous avez écrit, que vous voulez que votre python lib là. Je pense que vous devriez essayer virtualenv .
Si vous ne voulez pas passer par tous les problèmes (bien, vraiment revient juste pour vous sudo easy_install virtualenv
), vous pouvez essayer de vider tout votre python lib 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')
pour une application donnée qui utilise votre lib.
S'il vous plaît garder à l'esprit que les exemples donnés sont pour le test-fins seulement. Pour tout ce live-ish, je vous recommandons d'utiliser distutil . Des exemples d'utilisation sont donnés .