Поведение по умолчанию по умолчанию конфликтует с 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.