Поведение по умолчанию по умолчанию конфликтует с virtualenv?
Я следовал этому уроку http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world/page/5
Когда я добрался до команды virtualenv flask
, я получил это сообщение об ошибке:
Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
Это имеет смысл, поскольку суть virtualenv заключается в создании новой среды, которой вы можете управлять, а команда --user
размещает все в определенном месте, что не позволяет отделить среду разработки.
Похоже, что по умолчанию pip для установок --user
, могу ли я изменить это поведение по умолчанию? И, что еще лучше, могу ли я заставить Пипа всегда играть с virtualenv?
Чтобы уточнить, вот как выглядит мой терминал.
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
Ответы
Ответ 1
Вам не нужно устанавливать флаг --user
. Создав свой virtualenv (virtualenv flask
), активируйте его: source flask/bin/activate
. Ваша оболочка должна выглядеть примерно как (flask) ~>
.
Как только ваш virtualenv активирован, вы должны иметь возможность устанавливать пакеты без проблем. Например, pip install numpy
. Они будут установлены в: lib/python2.6/site-packages/
(для любой версии Python, которую вы используете)
Ответ 2
В файле ~/.pip есть файл pip.conf. Там я изменил флаг user = true на user = false, используя команду gedit pip.conf
, после чего я смог успешно создать виртуальную среду.
Ответ 3
В моем случае в /etc/pip.conf
был файл, который тайно устанавливал user=true
. Таким образом, каждый раз, когда я активировал virtualenv, эта конфигурация все еще влияла на virtualenv.
Удаление этой строки работало на меня.
Ответ 4
В моем случае я делал make test
для библиотеки python disco
mapreduce.
Итак, я изменил раздел тестирования Makefile
и удалил флаг --user
.
Ответ 5
В моем случае это была кастомная установка на python от anaconda, которая мешала установке системы. Проверьте which pip
... решение состоит в том, чтобы удалить или переместить пользовательскую установку python.
Ответ 6
Откройте $HOME/.pip/pip.conf
с помощью текстового редактора. Если его не существует (как в случае с моей машиной Manjaro), создайте его. Затем добавьте строки ниже, сохраните и закройте.
[global]
user=false
Когда вы меняете настройку для своих программ, предпочтите в $HOME
сделать это, если это возможно, что (i) сохранит настройку среди обновлений и переустановки системы (если вы разделили диск на /
и /home
]) и (ii), возможно, не будут нарушать дальнейшие обновления программы, в данном случае, pip
.