Почему пакет устанавливает пакет за пределы моей виртуальной среды?

После создания источника виртуальной среды я попробую

pip install -U --no-deps django-social-auth

и он возвращает:

OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.6/dist-packages/django_social_auth-0.6.9-py2.6.egg-info/dependency_links.txt'

Почему он пытается писать за пределами virtualenv?

Ответ 1

Я столкнулся с этой проблемой, когда переименовал каталог, содержащий мою виртуальную среду. Пылесос жесткого пути использовался уже не правильно.

Обновите shebang в pip script, чтобы указать на исполняемый файл python вашей виртуальной среды.

Ответ 2

На мой взгляд, либо вы выполняете пип, который не является частью виртуального, а вам, но интерпретатор python, который выполняется, не является частью виртуального. Убедитесь, что пип, который вы выполняете, является правильным с помощью which pip и принудительно удаляет питон из virtualenv с помощью your_envdir/bin/python pip <arguments>, а не просто вызывает простой пип.

Это странно, потому что если вы правильно активировали среду с помощью bin/activate, вы должны получить правильный пип. Вы уверены, что активированы с помощью . bin/activate, а не sh bin/activate? Это две разные вещи. Сработала ли подсказка?

Ответ 3

вы должны, вероятно, убедиться, что вы пипс от вашей виртуальной среды, так что sth. как

./env/bin/pip install -U --no-deps django-social-auth