PIP не устанавливается в папку virtualenv

10

Я пытаюсь установить django на virtualenv, который уже существует.

Следуя инструкциям , приведенным на веб - сайте пип установить здесь , я побежал следующее из SSH.

name@server:~$ . myenv.env/bin/activate
(myenv.env)nam@server:~$ pip install django

Однако в нижней части установки я вижу это:

creating /usr/local/lib/python2.7/dist-packages/django

error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied

Похоже, что он пытается установить его в глобальный каталог. У меня нет привилегий sudo. Я что-то здесь не так делаю?

Обновление: $ PATH = /var/django/myenv.env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Люк Сапан
источник
Работает ли он правильно для других пакетов? У вас есть такая же проблема, если вы используете easy_install?
Жаворонки
Та же проблема с другими пакетами. И я считаю, что easy_install требует sudo и будет установлен в глобальный каталог.
Люк Сапан
Нет, настройка virtualenv позволяет вам получить easy_install и pip. Вы можете напечатать, which easy_installчтобы увидеть, используете ли вы свой virtualenv или системный.
Жаворонки
На самом деле, вы уверены, что запускаете пип изнутри virtualenv? Что which pipдает? И ты видишь pipвнутри myenv.env/bin/?
Жаворонки
Я вижу пункт внутри myenv.env / bin /. Я просто попытался снова «активировать» мой env, и, несмотря на то, что он находится в этом режиме, «which pip» и «which easy_install» оба возвращают «usr / local / bin / pip» и «usr / bin / easy_install» соответственно.
Люк Сапан

Ответы:

6

Извините за ответ с опозданием на год! У меня была та же проблема, и я ее исправил. Я не знаю, изменили ли вы имя каталога после создания виртуальной среды, хотя я и сделал. Если так, то вот что я сделал.

1.) deactivateваш v-env. После исправления вам нужно перезапустить v-env, так что, может быть, и deactivateсейчас. правильно?

2.) Теперь, так как мы создали v-env по другому пути, мы должны изменить статические переменные пути в этих файлах.

Чтобы заставить работать пипс, вам не нужно этого делать, но я все еще делаю. bin/activate, bin/activate.csh, bin/activate.fish

bin/pip, bin/pip2, bin/pip2.7

bin/easy_install, bin/easy_install2.7

3.) Чтобы заставить работать pip, вы должны исправить интерпретатор python в файле pip, он также имеет статическое расположение интерпретатора, заданное virtualenv в процессе создания.

4.) Чтобы заставить easy_install работать? Вы догадались, исправить местоположение переводчика.

Я надеюсь, что это помогло любому человеку, читающему это в будущем. Извините ОП, за опоздание.

хрустящий
источник
Да, это было именно так. В моем случае я смог просто воссоздать virtualenv с нуля, и это решило проблему.
Люк Сапан
Рад быть
полезным
Я так рад наконец найти ответ. Для меня использование sed в папке venv значительно облегчило работу. Нечто подобное grep -rli '/path/to/old/env/bin' * | xargs -i@ sed -i 's/\/path\/to\/old\/env\/bin/\/path\/to\/new\/env\/bin/g' @. источник
Кит
Вы говорите: «Чтобы заставить работать pip, вы должны исправить интерпретатор python в файле pip», где и как это делается?
Дейв
3

У меня была такая же проблема.

Я удалил виртуальную среду и создал новую, которая решила проблему.

Вероятно, не тот ответ, на который вы надеялись, но так как он единственный ...

отметка
источник
1

Ну, без административных привилегий вы очень ограничены в том, что вы можете сделать. Если вам не разрешено повышать себя или запрашивать привилегии, лучший способ, который я нашел для этого, - это создать другую среду, создать файл require.txt, загрузить все необходимые пакеты на свой компьютер (django), которые бы также находится в вашем файле требований, и он должен работать.

secure212
источник
0

Была такая же проблема. В моем случае причина была в том, что созданный виртуальный env был для python2.7 (по умолчанию), но я использовал pip3 для установки пакета. pip3 не присутствовал в моем virtualenv, поэтому он стал глобальным. Для меня исправить было использовать

virtualenv flask --python=python3

создать окр.

Adversus
источник
0

Я столкнулся с той же проблемой, вызванной переименованием пользователя. Криспи ответ полностью прав. И мое решение может быть более удобным.

setps:
1. Введите путь к корзине вашей виртуальной среды, например cd ~/virenv_dir/bin
2. Переименуйте все файлы в этом каталоге с помощью команды sed.sed -i 's/old_name/new_name/' *

xialu
источник
0

В моем случае я определил два псевдонима (чтобы преодолеть некоторые другие проблемы с версией Python по умолчанию):

alias pip='/usr/bin/pip3'
alias python='/usr/bin/python3'

И это вызывало те же симптомы:

[Errno 13] Permission denied: '/usr/lib/python3.6/site-packages'

Удаление псевдонимов решило проблему (до или после создания virtualenv)

coderazzi
источник
0

Вызов sudo pipбудет вызывать глобальный pip, а не pip в вашем virtualenv. Активируйте / Работайте в своей среде, затем просто позвоните pip, нет sudo pip, это может решить вашу проблему, как и моя.

Милтон Уокер
источник