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
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)
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.
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.
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
.
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.
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.