web-dev-qa-db-fra.com

Le comportement par défaut de Pip est en conflit avec virtualenv?

Je suivais ce tutoriel http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world/page/5

Lorsque je suis arrivé à la commande virtualenv flask, J'ai reçu ce message d'erreur:

Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

Cela a du sens car le but de virtualenv est de créer un nouvel environnement que vous pouvez contrôler, et la commande --user Place tout dans un emplacement spécifique, ce qui va à l'encontre de l'objectif de séparation de l'environnement de développement.

Il semble cependant que pip utilise par défaut les installations de --user, Puis-je changer ce comportement par défaut? Et, encore mieux, puis-je faire jouer pip à Nice avec virtualenv à tout moment?

Pour clarifier, voici à quoi ressemble mon terminal.

MELCHIOR:miguelgrinberg-microblog megablanc$ virtualenv flask
New python executable in flask/bin/python
Installing setuptools, pip, wheel...
  Complete output from command /Users/megablanc/Dev...log/flask/bin/python -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip wheel:
  Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
  File "/Users/megablanc/Library/Python/2.7/bin/virtualenv", line 11, in <module>
    sys.exit(main())
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 832, in main
    symlink=options.symlink)
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 1004, in create_environment
    install_wheel(to_install, py_executable, search_dirs)
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 969, in install_wheel
    'PIP_NO_INDEX': '1'
  File "/Users/megablanc/Library/Python/2.7/lib/python/site-packages/virtualenv.py", line 910, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command /Users/megablanc/Dev...log/flask/bin/python -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip wheel failed with error code 1
17
Nils Guillermin

Vous n'avez pas besoin de définir le --user drapeau. Après avoir créé votre virtualenv (virtualenv flask), activez-le: source flask/bin/activate. Votre Shell devrait ressembler à quelque chose comme (flask) ~>.

Une fois votre virtualenv activé, vous devriez pouvoir installer des packages sans problème. Par exemple, pip install numpy. Ils seront installés dans: lib/python2.6/site-packages/ (quelle que soit la version de Python que vous utilisez)

21
benlaird

Il y a un fichier pip.conf dans ~/.pip. Là, j'ai changé le drapeau user = true en user = false en utilisant la commande gedit pip.conf, après quoi je suis capable de créer un environnement virtuel avec succès.

11
srikanth sridhar

Dans mon cas, il y avait un fichier dans /etc/pip.conf réglage du user=true secrètement. Donc, chaque fois que j'active un virtualenv, cette configuration affecte toujours le virtualenv.

Supprimer cette ligne a fonctionné pour moi.

5
MewX

Certaines personnes vous suggèrent de modifier /etc/pip.conf, qui (i) requiert des privilèges de superutilisateur et (ii) peut casser tout votre système en cas d'erreur. Il est donc préférable de le garder uniquement pour votre utilisateur.

S'ouvrir$HOME/.pip/pip.conf avec un éditeur de texte. S'il n'existe pas (ce qui est le cas sur ma machine Manjaro), créez-le. Ajoutez ensuite les lignes ci-dessous, enregistrez et fermez.

[global]
user=false

Lorsque vous modifiez un paramètre pour vos programmes, préférez sous $HOME pour faire cela si possible, ce qui (i) conservera le paramètre parmi les mises à jour et la réinstallation du système (si vous avez séparé votre disque en / et /home, bien sûr) et (ii) n'interrompront probablement pas les mises à niveau ultérieures du programme, dans ce cas, pip.

2
Erdin Eray

Dans mon cas, il s'agissait d'une installation personnalisée python à partir d'anaconda interférait avec l'installation du système. Vérifiez which pip... la solution consiste à supprimer ou à déplacer l'installation personnalisée de python.

1
Pratik Khadloya

Dans mon cas, je faisais un make test pour la bibliothèque python disco mapreduce.

J'ai donc modifié la section de test Makefile et supprimé --user drapeau.

1
jmunsch