web-dev-qa-db-fra.com

pip installer le paquet local dans le répertoire cible

J'ai une bibliothèque Python qui est publiée sur PyPI. Avant de mettre à jour chaque nouvelle version de la bibliothèque, je souhaite la tester en mettant à niveau un exemple d’application pour utiliser la nouvelle version.

Le méthode suggérée est de travailler en "mode de développement" en utilisant l'indicateur -e (--editable):

$ pip install -e <my package root>

Et cela installe effectivement le paquet dans mon environnement global.

Toutefois, mon exemple de programme est écrit pour Google App Engine, qui requiert que toutes les bibliothèques tierces soient copiées dans un dossier spécifique à l'application (./lib dans mon cas). J'installe normalement les paquets ici en utilisant l'option -t (--target) pour piper:

$ pip install -t lib/ <package>

Cependant, il semble que les options -e et -tsontpascompatible , et que je tente d'installer ma bibliothèque locale non publiée dans un dossier cible spécifié en utilisant les deux les drapeaux ensemble échouent.

Comment puis-je tester mon paquet de bibliothèque en l'installant dans un répertoire personnalisé avant de le publier?

4
Myk Willis

Pour les tests ponctuels d'un nouveau paquet, installer directement à partir du système de fichiers local semble être le meilleur choix:

$ cd /my/sample/application
$ pip install -t lib /my/local/package

Cette installation ne restera pas synchronisée car j'apporterai d'autres modifications au paquet local (comme si je devais utiliser pip install --editable), mais je peux vivre sans cela pour ce cas d'utilisation.

Je n'ai pas pu obtenir la réponse de @ pbaranay à cause de la façon dont pip install -e utilise les fichiers "Egg-info" qui ne sont apparemment pas compris/parcourus par le script dev_appserver.py de GAE. La suggestion de créer un fichier virtualenv et de le lier symboliquement à lib (plutôt que d'installer directement les paquetages dans lib avec -t) est néanmoins bonne.

1
Myk Willis

Adaptation des instructions de Jeffrey Godwyll Google App Engine Vendoring Done Right a travaillé pour moi:

cd ~/app-engine-project-directory
mkdir lib
ln -s env/lib/python2.7/site-packages lib
pip install -e ../my-local-dependency

(Bien entendu, vous devrez peut-être modifier la troisième ligne en fonction de la version de Python que vous utilisez.)

1
pbaranay

Vous pouvez installer avec -e votre paquet dans votre installation python locale ou où vous le souhaitez, puis créer un lien symbolique avec ce paquet local dans la variable lib de votre application:

ln -s /my/local/package /my/sample/application/lib/
0
Dan Cornilescu