2009-03-01 3 views
1

J'essaye d'obtenir un paquet installé sur Google App Engine. Le package repose plutôt sur pkg_resources, mais il est impossible d'exécuter setup.py sur App Engine.Comment puis-je enregistrer manuellement des distributions avec pkg_resources?

Cependant, il n'y a pas de code spécifique à la plate-forme dans la source, donc ce n'est pas un problème de simplement compresser la source et d'inclure ceux dans le chemin du système. Et j'ai une version de pkg_resources installée et fonctionnant aussi bien.

Le seul problème est d'obtenir le package effectivement enregistré avec pkg_resources donc quand il appelle iter_entry_points il peut trouver les plug-ins appropriés.

Quelles méthodes dois-je appeler pour enregistrer des modules sur sys.path avec toutes les métadonnées appropriées, et comment puis-je savoir quelles sont ces métadonnées?

Répondre

0

Créez un fichier setup.py pour le package comme vous le feriez normalement, puis utilisez "setup.py sdist --formats = zip" pour créer votre fichier zip source. Le code source intégré inclura un répertoire de métadonnées .egg-info, qui pourra ensuite être trouvé par pkg_resources. Alternativement, vous pouvez utiliser bdist_egg pour tous vos paquets.

1

Oui, pour les bibliothèques basées sur setuptools, vous devrez déployer les métadonnées "Egg" de la bibliothèque. Le moyen le plus simple que j'ai trouvé est de déployer un environnement virtualenv contenant votre projet et les bibliothèques requises.

Je l'ai fait ce processus manuellement et ajouté ce code à main.py pour initialiser le site-packages dossier d'une manière qui pkg_resources fonctionnera:

import site 
site.addsitedir('lib/python2.5/site-packages') 

Cependant, vous pouvez essayer appengine-monkey qui automatise la plupart de ces pour toi.

0

Sur votre système de développement local, exécutez python setup.py bdist_egg, ce qui créera une archive Zip avec les métadonnées nécessaires incluses. Ajoutez-le à votre sys.path, et cela devrait fonctionner correctement.

Questions connexes