"OSError: [Errno 1] Opération non autorisée" lors de L'installation de Scrapy dans OSX 10.11 (El Capitan) (Protection De L'intégrité du système)

J'essaie d'installer le framework Python Scrapy dans OSX 10.11 (El Capitan) via pip. Le script d'installation télécharge les modules requis et renvoie à un moment donné l'erreur suivante:

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'

J'ai essayé de désactiver la fonctionnalité rootless dans OSX 10.11 avec la commande:

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

Mais je reçois toujours la même erreur lorsque la machine redémarre.

Un indice ou une idée de mes collègues StackExchangers?

Si cela vous aide, la sortie complète du script est suivant:

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'
187
demandé sur Undo 2015-08-09 04:00:37

18 réponses

Je pense aussi qu'il n'est absolument pas nécessaire de commencer à pirater OS X.

J'ai pu le résoudre en faisant un

brew install python

Il semble que l'utilisation du python / pip fourni avec le nouveau El Capitan a quelques problèmes.

143
répondu Mario 2015-10-20 19:40:42
pip install --ignore-installed six

Ferait l'affaire.

Source: github.com/pypa/pip/issues/3165

391
répondu Sath 2015-12-28 00:33:22

Comme l'ont dit les autres réponses, c'est à cause de la nouvelle Protection de l'intégrité du système, mais je crois que les autres réponses sont trop compliquées.

Si vous n'utilisez ce paquet que dans l'utilisateur actuel, vous devriez pouvoir l'installer correctement, sans avoir besoin de désactiver le SIP, en utilisant le drapeau --user. Comme ceci:

sudo pip install --user packagename
80
répondu dietbacon 2017-06-26 15:28:07

Les réponses élevées n'ont pas fonctionné pour moi, cela semble fonctionner pour les utilisateurs D'EI Capitan. Mais pour les utilisateurs de macOS Sierra, essayez les étapes suivantes

  1. brew install python
  2. sudo pip install --user <package name>
33
répondu LYu 2017-09-27 21:19:27

Avertissements

Je suggère très fortement contre la modification du système Python sur Mac; il y a de nombreux problèmes qui peuvent se produire.

Votre erreur particulière montre que le programme d'installation a des problèmes pour résoudre les dépendances pour Scrapy sans affecter L'installation Python en cours. Le système utilise Python pour un certain nombre de tâches essentielles, donc il est important de garder l'installation du système stable et tel qu'installé à L'origine par Apple.

Je serait également épuiser toutes les autres possibilités avant de contourner la sécurité intégrée.

Solutions De Gestion De Paquets:

Veuillez d'abord consulter un outil de virtualisation Python tel que virtualenv ; cela vous permettra d'expérimenter en toute sécurité.

Un autre outil utile pour utiliser les langues et les logiciels sans entrer en conflit avec votre Mac OS est Homebrew . Comme MacPorts ou Fink, Homebrew est un gestionnaire de paquets pour Mac, et est utile pour essayer en toute sécurité beaucoup d'autres langues et outils.

"roulez votre propre" logiciel installe:

Si vous n'aimez pas l'approche du gestionnaire de paquets, vous pouvez utiliser le chemin /usr/local ou créer un répertoire /opt/local pour installer une autre installation Python et réparer vos chemins dans votre .bashrc. Notez que vous devrez activer root pour ces solutions.

Comment le faire de toute façon:

Si vous devez absolument désactiver le contrôle de sécurité (et j'espère sincèrement que c'est pour autre chose que de jouer avec les langues et les ressources du système), vous pouvez le désactiver temporairement et le réactiver en utilisant certaines des techniques de ce post sur la façon de désactiver la protection de L'intégrité du système .

22
répondu rholmes 2015-10-23 09:34:53

Cela a fait l'affaire pour moi:

   sudo pip install scrapy --ignore-installed six
16
répondu Roger 2016-06-14 17:36:08

Vous devez désactiver "System Integrity Protection" qui est une nouvelle fonctionnalité dans El Capitan.

Tout d'abord, vous devez exécuter la commande pour rootless config sur votre terminal

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

Ensuite, vous devez exécuter la commande ci-dessous sur le terminal de la partition de récupération (récupération OS)

# csrutil disable
# reboot

Je viens de résoudre mon problème comme ça. Je ne suis pas sûr que la première partie soit nécessaire. Essayez comme vous le souhaitez.

--AVERTISSEMENT

Vous devriez réactiver SIP après tout travaux;

Redémarrez simplement en mode de récupération et exécutez dans le terminal

# csrutil enable

Csrutil: Configuration De La Protection De L'Intégrité Du Système

12
répondu Ergun Ozyurt 2015-10-21 07:01:55

J'ai essayé D'installer AWS via pip dans El Capitan mais cette erreur apparaît

OSError: [Errno 1] Opération non autorisée: '/var/folders/wm/jhnj0g_s16gb36y8kwvrgm7h0000gp/T/pip-wTnb_D-uninstall/System/Library/Frameworks/Python.cadre / Versions / 2.7 / Extras / lib / python / six-1.4.1-py2. 7.egg-info "

J'ai trouvé la réponse ici

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

Cela fonctionne pour moi :)

12
répondu Evelin Ponce 2016-04-28 17:40:18

Je recevais la même erreur sur mon macOS Sierra. J'ai suivi ces étapes et réussi à installer le paquet scarpy.

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

MacBook-Air:~ shree$ scrapy version
Scrapy 1.4.0
8
répondu skipper21 2017-07-13 14:40:06

Cela a fait l'affaire pour moi.

Sudo pip install --ignore-scrapy installé

5
répondu Miss Haha 2016-06-26 10:28:23

Réinstallez python:

Brew installer python

Essayez à nouveau:

Sudo pip installer scrapy

Fonctionne pour moi, j'espère que cela peut aider

2
répondu dominicli 2016-12-27 04:09:22

Essayé une combinaison de quelques réponses et cela a finalement fonctionné:

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

Santé

2
répondu saza 2017-08-28 01:21:02

Redémarrez Mac - > maintenez "commande + R" enfoncée après le carillon de démarrage - > ouvre les utilitaires OS X - > Ouvrez le Terminal et tapez" csrutil disable "- > redémarrez OS X -> Ouvrez le Terminal et cochez"csrutil status"

1
répondu Sandeep 2015-10-19 19:02:36

Cette commande fonctionnerait parfaitement bien: D

Sudo-h pip install --upgrade package_name --ignore-installed six

1
répondu Anmol Shrivastava 2017-05-24 07:41:43

Parfois, un tel comportement peut être atteint si vous essayez d'installer python3 lib dans le dossier python2 en utilisant pip au lieu de pip3.

1
répondu user3860984 2017-11-24 08:25:27
  1. -- fermer SIP(Protection De l'intégrité du système) -- puis redémarrez, utilisez Commande + R pour entrer en mode débogage, puis sélectionnez terminal: csrutil désactiver redémarrer

2.

Sudo C_INCLUDE_PATH= / Applications / Xcode.app / contenu / développeur / plates-formes / MacOSX.plate-forme / développeur / SDKs / MacOSX10. 11.sdk/usr/include/libxml2 : / Applications / Xcode.app / contenu / développeur / plates-formes / MacOSX.plate-forme / développeur / SDKs / MacOSX10. 11.sdk/usr/include/libxml2/libxml : / Applications / Xcode.app / contenu / développeur / plates-formes / MacOSX.plate-forme / développeur / SDKs / MacOSX10. 11.sdk / usr / include pip install scrapy --ignore-installé six

3. -- ensuite, retirez old six, installez-le à nouveau sudo rm-rf / Bibliothèque / python / 2.7 / site-packages / six* sudo rm-rf / système / Bibliothèque / Frameworks / Python.framework/Versions/2.7/Extras/lib/python/six* sudo pip installer six

4. -- ensuite régler csrutil activer redémarrer

-- merdique fonctionne maintenant

0
répondu jimmyzhouj 2016-01-11 12:19:15

Ça marche pour moi:

pip install scrapy --user -U
-1
répondu DearX 2017-03-07 03:28:06

Il me manquait une dépendance ailleurs le long de la ligne, donc j'ai installé les autres exigences pour le projet comme ceci:

pip install --user -r requirements.txt
-1
répondu premonition 2017-06-01 20:31:40