В моем доме у меня есть каталог с именем lib/python2.7
(на самом деле таких каталогов пять для разных версий Python). Поскольку это общий хостинг (Webfaction), этот каталог имеет для меня основополагающее значение. Там у меня установлены такие вещи, как virtualenv
и virtualenvwrapper
, поскольку как клиент общего хостинга у меня нет доступа к sudo
и установке глобальных пакетов.
Однако, когда я создаю virtualenv:
$ mkvirtualenv myenvironment
$ workon myenvironment
$ which pip
# outputs the myenvironment's path to pip
$ pip freeze
Команда показывает весь список пакетов под моим lib/python2.7
(включая те же пакеты virtualenv и конфликтующие пакеты, которые у меня есть из-за ... устаревших ... причин). Это также меня раздражает, если я хочу установить пакет, который является именем пакета в lib/python2.7
, поскольку он не позволяет мне его обновлять.
Прямо в среде workon
я пытаюсь проверить, есть ли в PYTHONPATH странные вещи, но он пуст:
$ echo $PYTHONPATH
# shows a blank line
Он также будет пустым, если я попробую эту команду из любой виртуальной среды.
Кажется, что --no-site-packages
используется по умолчанию, но решает лишь часть проблемы. Это означает: pip freeze | wc -l
отображает меньшее значение в среде, чем при выполнении глобально, вне любой среды, что говорит мне, что есть определенные уже предоставленные пакеты, которые исключаются и находятся на самом хостинге (и не установлены мной, поскольку (опять же, хостинг общий, и у меня нет доступа к глобальному пространству).
Мой вопрос: как я могу это решить? Я хочу, чтобы мой virtualenv не отображал пакеты в $HOME/lib/python2.7
Избегайте дублирования ссылок на этот вопрос, там ничего не было полезного и до сих пор нет принятого ответа. Я написал этот вопрос, прочитав и попробовав каждое решение в этом вопросе