web-dev-qa-db-fra.com

Comment installer un paquet dans virtualenv?

J'ai créé un virtualenv avec la commande suivante.

mkvirtualenv --distribute --system-site-packages "$1"

Après avoir démarré virtualenv avec workon, je tape ipython. Ça m'invite

WARNING: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.

Lorsque j'essaie d'installer ipython avec virtualenv, le message d'erreur suivant s'affiche:

pip install ipython
Requirement already satisfied (use --upgrade to upgrade): ipython in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Cleaning up...

Est-ce que quelqu'un sait comment installer à l'intérieur du virtualenv?

38
user1424739

Créez votre virtualenv avec --no-site-packages si vous ne voulez pas qu'il puisse utiliser des bibliothèques externes:

virtualenv --no-site-packages my-virtualenv
. my-virtualenv/bin/activate
pip install ipython

Sinon, comme dans votre exemple, une bibliothèque installée sur votre système peut voir l’environnement Python comme satisfaisant votre dépendance demandée.

28
Charles Duffy

Eviter les maux de tête et les meilleures pratiques:

  • Les environnements virtuels ne font pas partie de votre projet git (ils n'ont pas besoin d'être versionnés)!

  • Créez un dossier pour vos environnements virtuels.

  • Après avoir activé l’environnement virtuel de votre projet, ne "jamais (Sudo package d’installation pip ".
  • Après avoir terminé votre travail, toujours "désactiver" votre environnement.
  • Évitez de renommer votre dossier de projet.


Pour une meilleure représentation, voici une simulation:

créer un dossier pour vos projets/environnements

$ mkdir venv

créer un environnement

$ cd venv/ 

$ virtualenv google_drive
New python executable in google_drive/bin/python
Installing setuptools, pip...done.

environnement d'activation

$ source google_drive/bin/activate

installer des paquets

(google_drive) $ pip install PyDrive
Downloading/unpacking PyDrive
Downloading PyDrive-1.3.1-py2-none-any.whl
...
...
...    
Successfully installed PyDrive PyYAML google-api-python-client oauth2client six uritemplate httplib2 pyasn1 rsa pyasn1-modules
Cleaning up...

paquet disponible dans l'environnement

(google_drive) $ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
>>>  
>>> gdrive = pydrive.auth.GoogleAuth()
>>>

désactiver l'environnement

(google_drive) $ deactivate 

$ 

forfait NON DISPONIBLE en dehors de l'environnement

$ python
Python 2.7.6 (default, Oct 26 2016, 20:32:10) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pydrive.auth
>>> 

Remarques:

Pourquoi pas sudo?

Virtualenv crée un nouvel environnement pour vous, définissant $ PATH et quelques autres variables et paramètres. Lorsque vous utilisez package d’installation Sudo pip, vous exécutez Virtualenv en tant que racine, en échappant à tout l’environnement créé, puis en installant le package sur un site global, - et pas dans le dossier du projet où vous avez un environnement virtuel, même si vous avez activé l’environnement.

Si vous renommez le dossier de votre projet ...

... vous devrez ajuster certaines variables de certains fichiers dans le répertoire bin de votre projet.

Par exemple:

bin/pip, ligne 1 (She Bang)

bin/activate, ligne 42 (VIRTUAL_ENV)

22
ivanleoncz

Eh bien, je n'ai pas de raison appropriée pour expliquer ce problème, mais je viens de trouver un petit travail autour

À l'intérieur de l'environnement virtuel

pip install -Iv package_name==version_number

maintenant cela va installer la version dans votre environnement virtuel

En outre, vous pouvez vérifier à l'intérieur de l'environnement virtuel avec cette

pip install yolk
yolk -l

Cela vous donnera les détails de tous les paquets installés dans les deux emplacements (système et virtualenv)

Certains diront qu'il n'est pas approprié d'utiliser --system-site-packages (c'est peut-être vrai), mais qu'en est-il si vous avez déjà fait beaucoup de choses dans votre virtualenv? Maintenant, vous ne voulez pas tout refaire de zéro.

Vous pouvez utiliser ceci comme un bidouillage et faire attention à la prochaine fois :)

8
Ja8zyjits

Pour Python 3:

pip3 install virtualenv

python3 -m venv venv_name

source venv_name/bin/activate  #key step

pip3 install "package-name"
7
moovon

Pour clarifier davantage l'autre réponse ici:

Sous la version actuelle de virtualenv, l'indicateur --no-site-packages est le comportement par défaut. Vous n'avez donc pas besoin de le spécifier. Cependant, vous remplacez la valeur par défaut en utilisant explicitement l'indicateur --system-site-packages, et ce n'est probablement pas ce que vous souhaitez. Le comportement par défaut (sans spécifier aucun indicateur) consiste à créer un environnement virtuel tel que, lorsque vous l'utilisez, aucun package Python installé en dehors de l'environnement ne soit accessible. C'est généralement le bon choix car il isole le mieux l'environnement virtuel de votre environnement informatique local. Les packages Python installés dans l'environnement n'affecteront pas votre ordinateur local et inversement.

Deuxièmement, pour utiliser un environnement virtuel après sa création, vous devez naviguer dans le répertoire de l’environnement virtuel, puis exécuter:

bin/activate

Cela permet de configurer les variables d'environnement de sorte que les packages Python et tous les exécutables figurant dans les dossiers bin de l'environnement virtuel soient utilisés avant ceux situés dans les emplacements standard de votre ordinateur local. Ainsi, par exemple, lorsque vous tapez "pip", la version de pip qui se trouve dans votre environnement virtuel s'exécutera à la place de la version de pip sur votre ordinateur local. Cela est souhaitable car pip à l'intérieur de l'environnement virtuel installera des packages à l'intérieur de l'environnement virtuel.

Le problème que vous rencontrez est dû au fait que vous exécutez des programmes (comme ipython) à partir de votre ordinateur local, alors que vous souhaitez plutôt installer et exécuter des copies de ces programmes isolés dans votre environnement virtuel. Vous définissez cela en créant l'environnement (sans spécifier les indicateurs de site-packages si vous utilisez la version actuelle), en exécutant le script d'activation mentionné ci-dessus, puis en exécutant pip pour installer les packages dont vous avez besoin (qui seront intégrés à l'environnement).

4
Christian Abbott

Pour utiliser l'environnement créé par virtualenv, vous devez d'abord source env/bin/activate. Après cela, installez simplement les paquets en utilisant pip install package-name.

4
PepperoniPizza

J'ai eu le même problème et le --no-site-packages N'a pas travaillé pour moi. J'ai découvert sur cette ancienne archive de liste de diffusion que vous êtes en mesure de forcer une installation dans virtualenv à l'aide de la commande -U indicateur pour pip, par exemple pip -U ipython. Vous pouvez vérifier que cela fonctionne en utilisant la commande bash which ipython pendant que vous êtes dans le virtuel.

source: https://mail.python.org/pipermail/python-list/2010-March/571663.html

1
Max Caldwell

De la documentation https://docs.python.org/3/library/venv.html :

Le script pyvenv est déconseillé depuis Python 3.6 en faveur de l’utilisation de python3 -m venv afin d’éviter toute confusion éventuelle avec lequel Python interprète un environnement virtuel sera basé sur.

Afin de créer un environnement virtuel pour un projet particulier, créez un fichier /home/user/path/to/create_venv.sh:

#!/usr/bin/env bash

# define path to your project's directory
PROJECT_DIR=/home/user/path/to/Project1

# a directory with virtual environment
# will be created in your Project1 directory
# it recommended to add this path into your .gitignore
VENV_DIR="${PROJECT_DIR}"/venv

# https://docs.python.org/3/library/venv.html
python3 -m venv "${VENV_DIR}"

# activates the newly created virtual environment
. "${VENV_DIR}"/bin/activate

# prints activated version of Python
python3 -V

pip3 install --upgrade pip

# Write here all Python libraries which you want to install over pip
# An example or requirements.txt see here:
# https://docs.python.org/3/tutorial/venv.html#managing-packages-with-pip
pip3 install -r "${PROJECT_DIR}"/requirements.txt

echo "Virtual environment ${VENV_DIR} has been created"

deactivate

Puis lancez ce script dans la console:

$ bash /home/user/path/to/create_venv.sh
1
SergO

Vous pouvez aller dans le dossier où votre venv existe et faire un clic droit -> git bash here. Alors vous avez juste raison python -m pip install ipython et il s’installera dans le dossier.

Je trouve cela encore plus pratique avec le paquetage virtualenv qui crée le fichier venv dans le dossier du projet.

1
George Sotiropoulos

Partage d'un cas personnel si cela peut aider. C'est qu'un environnement virtuel a été précédemment organisé. Son chemin peut être affiché par

echo $VIRTUAL_ENV

Assurez-vous qu'il est accessible en écriture à l'utilisateur actuel. Si non, en utilisant

Sudo ipython

effacerait certainement le message d'avertissement.

Dans anaconda, si $ VIRTUAL_ENV est organisé indépendamment, il suffit de supprimer ce dossier ou de le renommer, puis de redémarrer le shell. Anaconda retrouvera sa configuration par défaut.

0
jeremy.r

Partager ce qui a fonctionné pour moi à la fois sous Ubuntu et Windows. Ceci est pour python3. Pour faire pour python2, remplacez "3" par "2":

Ubuntu

pip install virtualenv --user
virtualenv -p python3 /tmp/VIRTUAL
source /tmp/VIRTUAL/bin/activate
which python3

Pour installer n’importe quel paquet: pip install package

Pour sortir de l'environnement virtuel: deactivate

Pour réactiver: source /tmp/VIRTUAL/bin/activate

Explication complète ici .

Les fenêtres

(En supposant que MiniConda soit installé et qu’il se trouve dans le menu Démarrer> Anaconda> Anaconda Terminal)

conda create -n VIRTUAL python=3  
activate VIRTUAL

Pour installer n’importe quel paquet: pip install package ou conda install package

Pour sortir de l'environnement virtuel: deactivate

Pour réactiver: activate VIRTUAL

Explication complète ici .

0
Nikhil VJ