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?
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.
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.
Pour une meilleure représentation, voici une simulation:
$ mkdir venv
$ cd venv/
$ virtualenv google_drive
New python executable in google_drive/bin/python
Installing setuptools, pip...done.
$ source google_drive/bin/activate
(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...
(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()
>>>
(google_drive) $ deactivate
$
$ 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
>>>
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.
... 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)
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 :)
Pour Python 3:
pip3 install virtualenv
python3 -m venv venv_name
source venv_name/bin/activate #key step
pip3 install "package-name"
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).
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
.
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
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
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.
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.
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":
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
(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