2010-05-04 3 views
16

Je préfère généralement créer virtualenvs avec l'option --no-site-packages pour plus d'isolation, et aussi parce que les paquets globaux python par défaut incluent beaucoup de paquets, et généralement la plupart d'entre eux ne sont pas nécessaires. Cependant, je voudrais toujours garder quelques paquets sélectionnés dans le monde, comme PIL ou psycopg2. Existe-t-il un bon moyen de les inclure dans virtualenv, qui peut aussi être automatisé facilement?Inclure le paquet global dans un virtualenv qui a été créé avec --no-site-packages

+0

En relation: [Installation de certains paquets en utilisant virtualenv] (http://stackoverflow.com/questions/434407/) –

Répondre

11

Si vous utilisez virtualenvwrapper et que vous pourriez utiliser le script postmkvirtualenv pour créer automatiquement des liens symboliques dans le nouveau répertoire virtualenv sitepackages.

#!/bin/sh 
cdsitepackages 
ln -s /path/to/system/site-packages/package-name 
cdvirtualenv 
+0

J'ai oublié cette question, mais j'ai fini par faire exactement cela. –

0

Je n'ai pas réellement essayé ceci avec ces paquets spécifiques, mais je devinerais qu'un simple lien symbolique des paquets de site globaux dans les paquets de site de virtualenv pourrait fonctionner, et ceci est facilement scriptable.

8

Si vous utilisez virtualenvwrapper, la commande shell add2virtualenv doit être présent dans un virtualenv actif. Utilisation:

add2virtualenv /path/to/package 

pour ajouter une entrée dans le fichier PTH _virtualenv_path_extensions.pth dans votre virtualenv site-packages. L'avantage d'utiliser add2virtualenv plutôt que de créer des liens symboliques vous-même, c'est que vous pouvez supprimer le paquet d'être importable en commentant sa ligne dans le fichier PTH. Cela permet de vérifier plus facilement la validité de votre code par rapport à plusieurs versions d'une bibliothèque dont il dépend.

+0

Oui, je suis d'accord que c'est maintenant le meilleur moyen. Je suis sûr que ce n'était pas disponible il y a quelques années cependant. –

+0

Probablement, il n'était pas disponible. Je suis certainement un grand fan de virtualenvwrapper pour de petites choses utiles comme ça. Bien sûr, vous pouvez également le faire manuellement, en écrivant votre propre fichier PTH. – pcurry

Questions connexes