2012-12-21 7 views
23

J'ai donc un dossier virtualenv appelé venv pour mon projet python.Comment importer un paquet globalement installé dans le dossier virtualenv

je peux courir:

venv/bin/pip install -r requirements.txt 

qui installe toutes les exigences dont j'ai besoin pour le projet, sauf un, M2Crypto. La seule façon de l'installer est par apt-get:

apt-get install python-m2crypto 

Comment puis-je ajouter ensuite ce paquet installé par apt à venv dossier?

Répondre

16

Ce que je l'ai fait après tout:

cp -R /usr/lib/python2.7/dist-packages/M2Crypto /home/richard/hello-project/venv/lib/python2.7/site-packages/ 
cp -R /usr/lib/python2.7/dist-packages/OpenSSL /home/richard/hello-project/venv/lib/python2.7/site-packages/ 
2
venv/bin/pip install -I M2Crypto 

Les forces -I à être également installé dans le virtualenv, même si elle est déjà installée dans le monde.

+0

Je vais essayer ça. Pourquoi n'est-il pas documenté dans la sortie de pip --help? –

+0

Il est documenté dans 'pip help install'. L'indicateur '-I' est spécifique à la commande' install' et n'est donc pas affiché dans la liste des indicateurs globaux (il existe de nombreux autres indicateurs spécifiques à la commande). – Amber

+1

Merci. Cela ne fonctionne pas très bien. Vous voyez, M2Crypto peut réellement être installé par pip mais il y a un bogue dans la bibliothèque qui fait échouer l'installation sur Ubuntu 12.04 LTS. Ils ont sorti un patch mais ça ne marche pas pour moi ... Donc quand j'essaye votre commande, il essaye de télécharger la librairie depuis le dépôt pip et de l'installer au lieu de simplement copier le paquet apt. –

34
--system-site-packages 

donne accès aux modules de site-packages globaux à l'environnement virtuel.

que vous pourriez faire:

$ sudo apt-get install python-m2crypto 
$ virtualenv env --system-site-packages 

... et vous auriez alors accès à m2crypto (ainsi que tous les autres paquets de l'ensemble du système installé) à l'intérieur de votre virtualenv.

+0

Tant que vous faites attention à n'installer que des paquets que vous voulez partager globalement avec l'installation de base de python, c'est la voie à suivre. –

+0

Mais alors, quel est l'intérêt d'utiliser un environnement virtuel s'il a accès à des paquets de sites globaux? –

+0

Richard Knop, donc vous pouvez installer des paquets supplémentaires sans root dans votre propre virtualenv, et ne pas jouer avec le système python. –

11

toggleglobalsitepackages basculera l'accès au système à l'échelle site-packages.

Remarque: Vous avez besoin de pip install virtualenvwrapper pour obtenir cette commande; la vanille virtualenv ne l'inclut pas. Avec virtualenvwrapper vous obtenez également les commandes très utiles mkvirtualenv et rmvirtualenv, parmi d'autres.

+0

uniquement si vous installez virtualenvwrapper. sinon vous obtenez 'toggleglobalsitepackages: commande non trouvée' – szeitlin

+0

Bon point ajouté. Merci! – Will

+3

à partir d'aujourd'hui, il est maintenant 'toggleglobalsitepackages' – eduncan911

Questions connexes