"OSError: [Errno 1] Операция не разрешена" при установке Scrapy в OSX 10.11 (El Capitan) (защита целостности системы)

Я пытаюсь установить Scrapy Python в OSX 10.11 (El Capitan) через pip. Установка script загружает необходимые модули и в какой-то момент возвращает следующую ошибку:

OSError: [Errno 1] Operation not permitted: '/tmp/pip-nIfswi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'

Я попытался отключить функцию rootless в OSX 10.11 с помощью команды:

sudo nvram boot-args="rootless=0";sudo reboot

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

Любая подсказка или идея от моих коллег StackExchangers?

Если это помогает, полный вывод script следующий:

sudo -s pip install scrapy
Collecting scrapy
  Downloading Scrapy-1.0.2-py2-none-any.whl (290kB)
    100% |████████████████████████████████| 290kB 345kB/s 
Requirement already satisfied (use --upgrade to upgrade): cssselect>=0.9 in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): queuelib in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from scrapy)
Collecting w3lib>=1.8.0 (from scrapy)
  Downloading w3lib-1.12.0-py2.py3-none-any.whl
Collecting lxml (from scrapy)
  Downloading lxml-3.4.4.tar.gz (3.5MB)
    100% |████████████████████████████████| 3.5MB 112kB/s 
Collecting Twisted>=10.0.0 (from scrapy)
  Downloading Twisted-15.3.0.tar.bz2 (4.4MB)
    100% |████████████████████████████████| 4.4MB 94kB/s 
Collecting six>=1.5.2 (from scrapy)
  Downloading six-1.9.0-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): zope.interface>=3.6.0 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from Twisted>=10.0.0->scrapy)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from zope.interface>=3.6.0->Twisted>=10.0.0->scrapy)
Installing collected packages: six, w3lib, lxml, Twisted, scrapy
  Found existing installation: six 1.4.1
    DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling six-1.4.1:
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/basecommand.py", line 223, in main
status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/commands/install.py", line 299, in run
root=options.root_path,
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/req/req_set.py", line 640, in install
requirement.uninstall(auto_confirm=True)
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/req/req_install.py", line 726, in uninstall
paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/req/req_uninstall.py", line 125, in remove
renames(path, new_path)
  File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/utils/__init__.py", line 314, in renames
shutil.move(old, new)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move
copy2(src, real_dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2
copystat(src, dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat
os.chflags(dst, st.st_flags)
OSError: [Errno 1] Operation not permitted: '/tmp/pip-nIfswi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'

Ответ 1

Я также думаю, что совершенно не нужно начинать взламывать OS X.

Я смог решить это, выполнив

brew install python

Кажется, что с использованием python/pip, который поставляется с новым El Capitan, есть некоторые проблемы.

Ответ 3

Как говорили другие ответы, это связано с новой защитой целостности системы, но я считаю, что другие ответы сложнее.

Если вы только собираетесь использовать этот пакет у текущего пользователя, вы сможете установить его просто отлично, без необходимости отключать SIP, используя флаг --user. Вот так:

sudo pip install --user packagename

Ответ 4

Предупреждения

Я бы предложил очень сильно против изменения системы Python на Mac; существует множество проблем, которые могут возникнуть.

Ваша конкретная ошибка показывает, что установщик имеет проблемы с разрешением зависимостей для Scrapy, не влияя на текущую установку Python. Система использует Python для ряда важных задач, поэтому важно поддерживать стабильную установку системы и, как первоначально установлено Apple.

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

Решения для диспетчера пакетов:

Сначала зайдите в инструмент виртуализации Python, например virtualenv; это позволит вам безопасно экспериментировать.

Другим полезным инструментом для использования языков и программного обеспечения без конфликта с вашей Mac OS является Homebrew. Как MacPorts или Fink, Homebrew - это менеджер пакетов для Mac, и полезно для безопасного использования множества других языков и инструментов.

"Сверните свои собственные" установки программного обеспечения:

Если вам не нравится подход менеджера пакетов, вы можете использовать путь /usr/local или создать каталог /opt/local для установки альтернативной установки Python и исправить свои пути в .bashrc. Обратите внимание, что вам нужно включить root для этих решений.

Как это сделать в любом случае:

Если вам абсолютно необходимо отключить проверку безопасности (и я искренне надеюсь, что это что-то другое, кроме как возиться с системными языками и ресурсами), вы можете временно отключить его и снова включить его, используя некоторые из методы в этом сообщении о том, как Отключить защиту целостности системы.

Ответ 5

Это сделало трюк для меня:

   sudo pip install scrapy --ignore-installed six

Ответ 6

Вы должны отключить "Защита целостности системы", которая является новой функцией El Capitan.

Сначала вы должны запустить команду для rootless config на вашем терминале

# nvram boot-args="rootless=0"
# reboot

Затем вы должны запустить приведенную ниже команду на терминале раздела восстановления (Recovery OS)

# csrutil disable
# reboot

Я только что решил свою проблему. Я не уверен, что первая часть нужна. Попробуйте, как вам нравится.

- ВНИМАНИЕ!

Вы должны включить SIP снова после того, как все будет работать;

Просто перезагрузитесь в режим восстановления и запустите в терминале

# csrutil enable

csrutil: Настройка защиты целостности системы

Ответ 7

Я попытался установить AWS через pip в El Capitan, но эта ошибка появляется

OSError: [Errno 1] Операция не разрешена: "/var/folders/wm/jhnj0g_s16gb36y8kwvrgm7h0000gp/T/pip-wTnb_D-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg- Информация о '

Я нашел ответ здесь

sudo -H pip install awscli --upgrade --ignore-installed six

Это работает для меня:)

Ответ 8

Высокие голосовые ответы не сработали для меня, похоже, для пользователей EI Capitan. Но для пользователей MacOS Sierra выполните следующие шаги.

  • brew install python
  • sudo pip install --user <package name>

Ответ 9

Это помогло мне.

sudo pip install - установка, установленная с помощью ловушки

Ответ 10

Я получал ту же ошибку на моем MacOS Sierra. Я выполнил эти шаги и успешно смог установить скудный пакет.

1. sudo pip install --ignore-installed six
2. sudo pip install --ignore-installed scrapy

MacBook-Air:~ shree$ scrapy version
Scrapy 1.4.0

Ответ 11

установить python еще раз:

brew установить python

попробуйте еще раз:

sudo pip install scrapy

работает для меня, надеюсь, что это поможет

Ответ 12

Перезагрузите Mac → удерживайте клавишу "Command + R" после звукового сигнала запуска → Открывает OS X Utilities → Откройте терминал и введите "csrutil disable" → Перезагрузите OS X → Откройте терминал и проверьте "статус csrutil"

Ответ 13

Эта команда будет работать отлично: D

sudo -H pip install --upgrade имя_компьютера - установленный сингл шесть

Ответ 14

Пробовал комбинацию некоторых ответов, и это в конечном итоге сработало:

sudo -H pip install --upgrade --ignore-installed awsebcli

Приветствия

Ответ 15

  • - закрыть SIP (защита целостности системы) - затем перезагрузитесь, используйте команду + R для входа в режим отладки, затем выберите терминал: csrutil disable перезагрузка

2.

sudo C_INCLUDE_PATH =/Приложения/Xcode.app/Содержание/Разработчик/Платформы/MacOSX.platform/Разработчик/SDK/MacOSX10.11.sdk/usr/include/libxml2 :/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/libxml2/libxml :/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include pip install scrapy - установленный сингл шесть

3. - затем удалите старые шесть, установите его снова sudo rm -rf/Library/Python/2.7/site-packages/six* sudo rm -rf/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six* sudo pip install six

4. - затем установите его обратно csrutil enable перезагрузка

- теперь дерьмовые работы

Ответ 16

Иногда такое поведение может быть достигнуто, если вы попытаетесь установить python3 lib в папку python2, используя pip вместо pip3.

Ответ 17

У меня отсутствовала зависимость где-то еще вдоль линии, поэтому я установил другие требования для проекта следующим образом:

pip install --user -r requirements.txt

Ответ 18

он работает для меня:

pip install scrapy --user -U