Comment installer un paquet à l'intérieur virtualenv?
J'ai créé un virtualenv avec la commande suivante.
mkvirtualenv --distribute --system-site-packages "$1"
Après le démarrage de la virtualenv avec workon
, j'type ipython
. Il me pousse
WARNING: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
Lorsque j'essaie d'installer ipython avec le virtualenv, j'ai eu le message d'erreur suivant:
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...
Personne ne sait comment les installer à l'intérieur de la virtualenv?
- Il est probable que
pip
n'était pas installé en tant que partie de votre environnement virtuel. En tant que tel, vous devez installer pip premier à être en mesure d'installer les bibliothèques de votre venv - Faites-vous un pip install à partir de votre virtualenv (sourcing le virtualenv et l'installation d'ipython)?
Vous devez vous connecter pour publier un commentaire.
Créer votre virtualenv avec
--no-site-packages
si vous ne voulez pas être en mesure d'utiliser des bibliothèques externes:Sinon, comme dans votre exemple, on peut voir une bibliothèque installée dans votre système à l'environnement Python comme la satisfaction de votre demande de dépendance.
--system-site-packages
doit être évitée. Ce drapeau défaites de l'ensemble du point de virtualenvs (c'est pourquoi--no-site-packages
a été rendue par défaut quelques versions en arrière).Éviter les Maux de tête et des Meilleures Pratiques:
Environnements virtuels ne font pas partie de votre projet git (ils n'ont pas besoin d'être versionné) !
Créer un dossier pour vos Environnements Virtuels.
Pour une meilleure représentation, voici une simulation:
de créer un dossier pour vos projets/environnement
la création de l'environnement
l'activation de l'environnement
l'installation de paquets
forfait disponible à l'intérieur de l'environnement
désactiver l'environnement
paquet NON DISPONIBLE en dehors de l'environnement
Remarques:
Pourquoi ne pas sudo?
Si vous renommez le dossier de votre projet...
Bien je n'ai pas un motif approprié concernant les raisons de ce comportement se produit, mais ensuite, j'ai juste trouvé un petit travail autour de
maintenant, cela permettra d'installer la version de votre environnement virtuel
Cela vous donnera les détails de tous les packages installés dans les deux endroits(système et virtualenv)
Bien que certains puissent dire ses pas approprié d'utiliser --system-site-packages (c'est peut-être vrai), mais que faire si vous avez déjà fait beaucoup de choses à l'intérieur de votre virtualenv? Maintenant, vous n'avez pas envie de tout refaire à partir de zéro.
Vous pouvez l'utiliser comme un hack et être prudent à partir de la prochaine fois 🙂
Pour Python 3 :
D'utilisation de l'environnement virtualenv a créé, vous devez d'abord
source env/bin/activate
. Après cela, il suffit d'installer les paquets à l'aide depip install package-name
.Pour clarifier la réponse ici:
La version actuelle de la virtualenv, l'option --no-site-packages drapeau est le comportement par défaut, de sorte que vous n'avez pas besoin de le spécifier. Cependant, vous remplacez la valeur par défaut en utilisant explicitement le --system-site-packages drapeau, et ce n'est probablement pas ce que vous voulez. Le comportement par défaut (sans spécifier d'option) est de créer un environnement virtuel tel que, lorsque vous l'utilisez, tous les paquets Python installé à l'extérieur de l'environnement ne sont pas accessibles. C'est typiquement le bon choix, car elle isole l'environnement virtuel à partir de votre ordinateur local de l'environnement. Les paquets Python installé au sein de l'environnement ne sera pas nuire à votre ordinateur local et vice versa.
Deuxièmement, l'utilisation d'un environnement virtuel après avoir été créée, vous avez besoin pour naviguer dans l'environnement virtuel de répertoire et de lancer:
Ce que cela fait, c'est de configurer les variables d'environnement de sorte que les paquets Python et tous les exécutables dans l'environnement virtuel bin dossiers seront utilisés avant ceux de la norme emplacements sur votre ordinateur local. Ainsi, par exemple, lorsque vous tapez "pip", la version de pip qui est à l'intérieur de votre environnement virtuel sera exécuté à la place de la version de pip sur votre machine locale. C'est souhaitable car pip à l'intérieur de l'environnement virtuel installera les paquets à l'intérieur de l'environnement virtuel.
Le problème que vous rencontrez est parce que vous êtes l'exécution de programmes (comme ipython) à partir de votre ordinateur local, lorsque vous voulez installer et d'exécuter des copies de ces programmes isolés à l'intérieur de votre environnement virtuel. Ce faire, vous devez par la création de l'environnement (sans préciser site-packages drapeaux si vous utilisez la version actuelle), l'exécution de l'activer script mentionné ci-dessus, puis en exécutant le programme pep pour installer tous les packages dont vous avez besoin (ce qui ira à l'intérieur de l'environnement).
source bin/activate
. Sans source, rien ne se passe. Reste l'explication est grande.deactivate
J'ai eu le même problème et la
--no-site-packages
ne fonctionne pas pour moi. J'ai découvert sur cette ancienne archive de liste de diffusion que vous êtes en mesure de forcer une installation dans le virtualenv à l'aide de la-U
drapeau pour le pep, par exemplepip -U ipython
. Vous pouvez vérifier cela fonctionne à l'aide de la commande bashwhich ipython
tandis que dans le virtualenv.source: https://mail.python.org/pipermail/python-list/2010-March/571663.html
À partir de la documentation https://docs.python.org/3/library/venv.html:
Afin de créer un environnement virtuel pour un projet particulier, de créer un fichier
/home/user/path/to/create_venv.sh
:Puis exécutez le script suivant dans la console:
sudo apt-get install python3-venv
premier. J'ai couru votre script sans que et il a donné un message d'erreur pour les premières commandes de m'informer de cette situation et a ensuite procédé à l'essayer et installer les exigences en ma principale python!Vous pouvez aller dans le dossier où votre
venv
existe et faites un clic droit ->git bash here.
Ensuite, vous avez juste à droite
python -m pip install ipython
et il va installer à l'intérieur du dossier.Je trouve cela encore plus pratique avec le
virtualenv
package qui crée la venv à l'intérieur du projet de dossier.Le partage de ce qui a fonctionné pour moi dans les deux Ubuntu et Windows. C'est pour python3. À faire pour python2, remplacer "3" par "2":
Ubuntu
Pour installer un paquet:
pip install package
De sortir de l'environnement virtuel:
deactivate
Pour activer à nouveau:
source /tmp/VIRTUAL/bin/activate
Explication complète ici.
Windows
(En supposant que vous avez MiniConda installés et dans le Menu Démarrer > Anaconda > Anaconda Terminal)
Pour installer un paquet:
pip install package
ouconda install package
De sortir de l'environnement virtuel:
deactivate
Pour activer à nouveau:
activate VIRTUAL
Explication complète ici.
Le partage d'un cas personnel, si cela aide. C'est un environnement virtuel a été préalablement fixée. Son chemin d'accès peut être affiché par
echo $VIRTUAL_ENV
Assurez-vous que le il est accessible en écriture pour l'utilisateur actuel. Si non, en utilisant
sudo ipython
serait certainement effacer le message d'avertissement.
Dans anaconda, si $VIRTUAL_ENV est indépendante aménagée, on peut tout simplement supprimer ce dossier ou le renommer, puis redémarrer le shell. Anaconda sera de récupérer à sa configuration par défaut.