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


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

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?

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

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'
18 187

18 ответов:

Я также думаю, что это абсолютно не обязательно, чтобы начать взлом OS X.

я смог решить это делаю

brew install python

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

pip install --ignore-installed six

будет делать трюк.

Источник:github.com/pypa/pip/issues/3165

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

sudo pip install --user packagename

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

  1. brew install python
  2. sudo pip install --user <package name>

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

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

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

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

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

пожалуйста, загляните в инструмент виртуализации Python, такой как virtualenv во-первых, это позволит вам смело экспериментировать.

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

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

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

как это сделать так:

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

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

   sudo pip install scrapy --ignore-installed six

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

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

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

затем, вы должны запустить следующую команду в терминале раздел восстановления (Восстановление операционной системы)

# csrutil disable
# reboot

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

--предупреждение

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

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

# csrutil enable

csrutil: Настройка Защиты Целостности Системы

Я пытался установить 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.яйцо-инфо'

Я нашел ответ!--8-->здесь

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

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

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

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

MacBook-Air:~ shree$ scrapy version
Scrapy 1.4.0

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

sudo pip install --ignore-installed scrapy

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

brew install python

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

sudo pip install scrapy

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

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

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

Ура

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

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

судо -ч пункт Установить имя_пакета --модернизация --игнорировать-установлены шесть

иногда такое поведение может быть достигнуто при попытке установить python3 lib в папку python2 с помощью pip вместо pip3.

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

2.

sudo C_INCLUDE_PATH= / Applications / Xcode.приложение / содержание / разработчик / платформы / MacOSX.платформа/разработчик/пакеты SDK/MacOSX10.11.sdk / usr / include / libxml2 :/Применения/Xcode.приложение / содержание / разработчик / платформы / MacOSX.платформа/разработчик/пакеты SDK/MacOSX10.11.sdk / usr / include / libxml2 / libxml :/Применения/Xcode.приложение / содержание / разработчик / платформы / MacOSX.платформа/разработчик/пакеты SDK/MacOSX10.11.sdk / usr / include pip install scrapy --ignore-установлено шесть

3. -- затем удалите старые шесть, установите его снова sudo rm-rf /Библиотека / Python / 2.7 / site-packages / six* sudo rm-rf/System/Library/Framework / Python.рамки/версии/2.7/дополнения в/lib/Python и шесть* sudo pip установить шесть

4. -- тогда поставь его обратно csrutil включить перезагрузка

-- дерьмово работает сейчас

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

pip install scrapy --user -U

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

pip install --user -r requirements.txt