Вопрос-Ответ

pip install failing with: OSError: [Errno 13] Permission denied on directory

ошибка установки pip с: OSError: [Ошибка 13] Отказано в разрешении для каталога

pip install -r requirements.txt сбой с приведенным ниже исключением OSError: [Errno 13] Permission denied: '/usr/local/lib/.... Что не так и как мне это исправить? (Я пытаюсь настроить Django)

Installing collected packages: amqp, anyjson, arrow, beautifulsoup4, billiard, boto, braintree, celery, cffi, cryptography, Django, django-bower, django-braces, django-celery, django-crispy-forms, django-debug-toolbar, django-disqus, django-embed-video, django-filter, django-merchant, django-pagination, django-payments, django-storages, django-vote, django-wysiwyg-redactor, easy-thumbnails, enum34, gnureadline, idna, ipaddress, ipython, kombu, mock, names, ndg-httpsclient, Pillow, pyasn1, pycparser, pycrypto, PyJWT, pyOpenSSL, python-dateutil, pytz, requests, six, sqlparse, stripe, suds-jurko
Cleaning up...
Exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run
requirement_set.install(install_options, global_options, root=options.root_path)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1436, in install
requirement.install(install_options, global_options, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 672, in install
self.move_wheel_files(self.source_dir, root=root)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 902, in move_wheel_files
pycompile=self.pycompile,
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 206, in move_wheel_files
clobber(source, lib_dir, True)
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 193, in clobber
os.makedirs(destsubdir)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/amqp-1.4.6.dist-info'
Переведено автоматически
Ответ 1

Вместо того, чтобы использовать sudo with pip install, лучше сначала попробовать pip install --user. Если это не удается, тогда взгляните на верхний пост здесь.

Причина, по которой вам не следует использовать sudo, заключается в следующем:

Когда вы запускаете pip с помощью sudo, вы запускаете произвольный код Python из Интернета от имени пользователя root, что представляет собой довольно большой риск для безопасности. Если кто-то размещает вредоносный проект на PyPI и вы устанавливаете его, вы предоставляете злоумышленнику root-доступ к вашему компьютеру.

Ответ 2

Вариант a) Создайте virtualenv, активируйте его и установите:

virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt

Вариант b) Установить в вашем домашнем каталоге:

pip install --user -r requirements.txt

Моя рекомендация использовать безопасную опцию (a), чтобы требования этого проекта не мешали требованиям других проектов.

Ответ 3

Вы пытаетесь установить пакет по общесистемному пути, не имея на это разрешения.


  1. В общем, вы можете использовать sudo для временного получения прав суперпользователя под свою ответственность, чтобы установить пакет по общесистемному пути:


     sudo pip install -r requirements.txt

    Подробнее об этом sudo здесь.


    На самом деле, это плохая идея, и для нее нет подходящего варианта использования, см. Комментарий @wim .



  2. Если вы не хотите вносить общесистемные изменения, вы можете установить пакет по индивидуальному для каждого пользователя пути, используя --user флаг.


    Все, что требуется, это:


     pip install --user runloop requirements.txt


  3. Наконец, для еще более мелкозернистого управления вы также можете использовать virtualenv, который может быть превосходным решением для среды разработки, особенно если вы работаете над несколькими проектами и хотите отслеживать зависимости каждого из них.


    После активации вашего virtualenv с помощью


    $ my-virtualenv/bin/activate


    следующая команда установит пакет внутри virtualenv (а не по общесистемному пути):


    pip install -r requirements.txt



Ответ 4

Просто уточняю, что сработало у меня после долгих усилий в linux (на основе ubuntu) из-за ошибок с отказом в разрешении, и использую ответ Берта выше, который я сейчас использую...

$ pip install --user <package-name>

или при запуске pip для файла требований ...

$ pip install --user -r requirements.txt

и они надежно работают при каждой установке pip, включая создание виртуальных сред.

Однако самым чистым решением, из моего дальнейшего опыта, была установка python-virtualenv и virtualenvwrapper с sudo apt-get install помощью. на системном уровне.

Затем в виртуальных средах используйте pip install без --user флага И без sudo. В целом намного чище, безопаснее и проще.

2023-09-10 00:30 python pip