pip-python не найден в виртуальной среде

Я установил python-virtualenv и python-virtualenvwrapper и создал виртуальную среду с помощью mkvirtualenv NAME, а затем активировал ее с помощью workon NAME. Заглянув в ~/.virtualenvs/NAME/bin, я вижу, что там установлен pip.

Однако, когда я пытаюсь установить что-либо через pip, мне говорят, что pip-python: команда не найдена

Я не устанавливал систему pip широко, и у меня сложилось впечатление, что мне это не нужно, учитывая, что она уже была установлена ​​внутри виртуальной среды. Теперь все это заставляет меня поверить, что что-то не так установлено с моим $ PATH, что это может быть? Когда я нахожусь в виртуальной среде как таковой: (ИМЯ) [пользователь @ хост] $, не должен ли мой путь уже быть изменен для использования установки pip внутри этой среды? Что мне нужно сделать, чтобы это было так?


person lightstrike    schedule 25.07.2012    source источник


Ответы (2)


pip-python — это имя исполняемого файла в некоторых дистрибутивах Linux. Это на моей машине Fedora.

Когда pip устанавливается в виртуальную среду, имя исполняемого файла просто pip, а не pip-python. Поэтому вам нужно выполнить его с ~/.virtualenvs/NAME/bin/pip, а не ~/.virtualenvs/NAME/bin/pip-python.

person Colin Dunklau    schedule 25.07.2012
comment
Правильно - я пытаюсь понять, почему, когда виртуальная среда активна, этот пункт не добавляется в мой $ PATH. Я не хочу указывать абсолютный путь к нему каждый раз, когда я хочу что-то установить, обновить или удалить, пока я нахожусь в виртуальном окружении. Создание псевдонима также не будет идеальным, потому что тогда, если я изменю virtualenv, псевдоним будет указывать на неправильные экземпляры pip. Я думаю, все это должно обрабатываться самим virtualenv. - person lightstrike; 26.07.2012
comment
@lightstrike, когда вы находитесь в активированной виртуальной среде, pip должен вызывать ее. pip-python вызовет системный pip, потому что активация virtualenv просто вставляет среду в начало $PATH - person Colin Dunklau; 26.07.2012

Вы должны установить pip в своей системе, чтобы сделать его доступным в virtualenv.

person Yossi    schedule 25.07.2012
comment
Даже если pip уже установлен внутри virtualenv во время создания? Если я укажу абсолютный путь к этой версии pip в virtualenv, все будет работать нормально: ./.virtualenvs/NAME/bin/pip install Django установит Django в virtualenv - person lightstrike; 26.07.2012
comment
virtualenv создает своего рода ссылки на реальные установки. Например, он всегда использует локальную установку python со своими стандартными библиотеками. То же самое происходит с pip. - person Yossi; 26.07.2012
comment
Итак, я установил python-pip для всей системы, и теперь команда найдена, но не знает о виртуальной среде. Когда мой virtualenv активен, общесистемный пункт не знает о пакетах, которые я установил в virtualenv, используя абсолютный путь к пункту virtualenv. - person lightstrike; 26.07.2012
comment
Это может быть вызвано неправильным порядком установки. Попробуйте создать новую среду. - person Yossi; 26.07.2012
comment
Не идти. Поскольку это общесистемный пип, он пытается установить в /user/lib/python2.6 вместо установки python в virtualenv. - person lightstrike; 26.07.2012