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'
python
permissions
pip
install
RunLoop
источник
источник
Ответы:
Вариант а) Создайте virtualenv, активируйте его и установите:
Вариант б) Установите в свой домашний каталог:
Я рекомендую использовать вариант safe (a), чтобы требования этого проекта не мешали требованиям других проектов.
источник
sudo:pip: command not found
в моем экземпляре aws ec2 при выполнении этой команды. Пожалуйста помоги.sudo
. хотя сейчас это работает, в будущем у вас будет много головной боли.Нам действительно следует прекратить рекомендовать использование
sudo
withpip install
. Лучше сначала попробоватьpip install --user
. Если это не удается, взгляните на верхний пост здесь .Причина, по которой вы не должны использовать
sudo
заключается в следующем:Когда вы запускаете pip с
sudo
, вы запускаете произвольный код Python из Интернета как пользователь root, что представляет собой довольно большой риск для безопасности. Если кто-то разместит вредоносный проект на PyPI и вы его установите, вы дадите злоумышленнику root-доступ к своей машине.источник
sudo x install
, всехx
(в том числеx = make
).--user
устанавливает пакет в ваш домашний каталог, а не в корень. Установка чего-либо в это место не требует дополнительных привилегий.sudo
были удалены год назад. Этот ответ устарел - отредактируйте и обновите его. Вам также необходимо указать индивидуальные и общесистемные установки и разрешения. Не используйте свой ответ для прямой критики других ответов, поскольку они быстро устареют.Вы пытаетесь установить пакет по общесистемному пути, не имея на это разрешения.
В общем, вы можете использоватьsudo
для временного получения разрешений суперпользователя под вашу ответственность , чтобы установить пакет по общесистемному пути:Узнайте большеsudo
здесь .На самом деле, это плохая идея, и для нее нет хорошего варианта использования, см. Комментарий @ wim.
Если вы не хотите вносить общесистемные изменения, вы можете установить пакет на свой путь для каждого пользователя, используя
--user
флаг.Все, что нужно, это:
Наконец, для еще более детального контроля вы также можете использовать virtualenv , который может быть лучшим решением для среды разработки, особенно если вы работаете над несколькими проектами. и хотите отслеживать зависимости каждого из них.
После активации вашего virtualenv с помощью
$ my-virtualenv/bin/activate
следующая команда установит пакет внутри virtualenv (а не по общесистемному пути):
pip install -r requirements.txt
источник
pyenv/pipenv
должны упомянуть тех, кто предпочитаетvirtualenv
(илиconda-env
) б) sudo считается вредным, и посмотреть другие ответы, почему. Поэтому сначала поставьте ответ на основе env, а затем sudo с большим отказом от ответственности.sudo pip install -r requirements.txt
никогда не бывает прав. Системная среда Python принадлежит системе, точка . Если вы все же устанавливаете в систему больше материалов Python, делайте это только с помощью диспетчера пакетов (напримерsudo yum install
,apt-get
и т. Д.), Поскольку эти репозитории должны иметь безопасные и совместимые версии имеющихся библиотек.sudo make install
, обычно скомпилированный + связанный код на самом деле не аналогичен a,sudo pip install
поскольку установка Python env в систему может аннулировать зависимости . Предположим, существует системная службаpython-frobnicator
, от которой зависитfroblib
(она также будет в диспетчере пакетов и привязана к совместимой версии), а затем у васsudo pip install
есть другое приложение или библиотека, зависящая от "froblib > 1.2
". Пип с радостью «обновит» системную версию наfroblib
более новую, которая может быть несовместимой / непроверенной и сломать систему.Просто поясняя, что сработало для меня после долгой боли в Linux (на основе ubuntu) из-за ошибок, запрещенных в разрешении, и используя ответ Берта выше, я теперь использую ...
или если вы запускаете pip в файле требований ...
и они надежно работают для каждой установки pip, включая создание виртуальных сред.
Однако, по моему дальнейшему опыту , самым чистым решением была установка
python-virtualenv
иvirtualenvwrapper
сsudo apt-get install
на системном уровне.Затем внутри виртуальных сред используйте
pip install
без--user
флага И безsudo
. В целом намного чище, безопаснее и проще.источник
pip install --user -r requirements.txt
У пользователя нет прав на запись для некоторых путей установки Python. Вы можете дать разрешение:
Поэтому вы должны дать разрешение, а затем попытаться установить его снова, если у вас есть новые пути, вы также должны дать разрешение:
источник
/usr
наши дни все, что находится ниже, обычно принадлежит пользователю root. Рекурсивное переедание может серьезно испортить вашу систему. ИЗБЕГАЙТЕ .Если вам нужны разрешения, вы не можете использовать pip с sudo. Вы можете сделать трюк, чтобы вы могли использовать sudo и установить пакет. Просто поместите sudo python -m ... перед командой pip.
источник
Итак, я получил ту же самую ошибку по совершенно другой причине. Из-за совершенно отдельной, но известной ошибки Homebrew + pip я последовал этому обходному пути. указанному в справочной документации Google Cloud, где вы создаете файл .pydistutils.cfg в своем домашнем каталоге. Этот файл имеет специальную конфигурацию, которую вы должны использовать только для установки определенных библиотек. Я должен был удалить этот файл disutils.cfg после установки пакетов, но я забыл это сделать. Так что исправление для меня было просто ...
rm ~/.pydistutils.cfg
,А дальше все заработало как обычно. Конечно, если у вас есть какая-то конфигурация в этом файле по реальной причине, вы не захотите просто удалить этот файл. Но в случае, если кто-то другой сделал это обходное решение и забыл удалить этот файл, это помогло мне!
источник
Это проблема с разрешением,
по умолчанию это будет
/usr/local/lib/python2.7/
или попробуйте,
а затем скажите:
pip install -r requirements.txt
это будет установлено внутри вашего envне говорите,
sudo pip install -r requirements.txt
это будет установлено на произвольный путь Python.источник