web-dev-qa-db-fra.com

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

J'essaie d'installer le framework Scrapy Python sous OSX 10.11 (El Capitan) via pip. Le script d'installation télécharge les modules requis et à un moment donné renvoie 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é sans racine 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 la suivante:

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'
203
Luis U.

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

J'ai pu le résoudre en faisant une

brew install python

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

148
Mario
pip install --ignore-installed six

Ferait le tour.

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

399
Sath

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

Si vous n'utilisez que ce package dans l'utilisateur actuel, vous devriez pouvoir l'installer correctement, sans qu'il soit nécessaire de désactiver le SIP, en utilisant l'indicateur --user. Comme ça:

Sudo pip install --user packagename
87
dietbacon

Les réponses à haut vote n'ont pas fonctionné pour moi, cela semble fonctionner pour les utilisateurs d'El Capitan. Mais pour les utilisateurs de MacOS Sierra, essayez les étapes suivantes

  1. brew install python
  2. Sudo pip install --user <package name>
38
LYu

Avertissements

Je suggère très fortement de ne pas modifier le système Python sur Mac; de nombreux problèmes peuvent survenir.

Votre erreur particulière indique que le programme d'installation rencontre des problèmes pour résoudre les dépendances de Scrapy sans affecter l'installation actuelle de Python. Le système utilise Python pour un certain nombre de tâches essentielles. Il est donc important de maintenir l’installation du système stable et d’être initialement installée par Apple.

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

Solutions de gestion de paquets:

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

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

Installations du logiciel "Faites votre propre":

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 corriger vos chemins dans votre .bashrc. Notez que vous devrez activer root pour ces solutions.

Comment le faire quand même:

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 réactivez-le en utilisant certaines des techniques décrites dans cet article pour savoir comment désactiver la protection de l'intégrité du système .

23
rholmes

Cela a fait le tour pour moi:

   Sudo pip install scrapy --ignore-installed six
16
Roger

Vous devez désactiver "Protection de l'intégrité du système", une nouvelle fonctionnalité d'El Capitan.

Tout d'abord, vous devez exécuter la commande pour la configuration sans racine 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 (Recovery 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 voulez.

- AVERTISSEMENT

Vous devez réactiver SIP une fois que tout fonctionne.

Il suffit de redémarrer à nouveau en mode de récupération et de l'exécuter dans un terminal

# csrutil enable

csrutil: Configuration de la protection de l'intégrité du système

12
Ergun Ozyurt

J'ai essayé d'installer AWS via pip à El Capitan mais cette erreur semble

OSError: [Errno 1] Opération non autorisée: '/var/folders/wm/jhnj0g_s16gb36y8kwvrgm7h0000gp/T/pip-wTnb_D-installation/System/Library/Frameworks/Python.framework/Versions/ 1.4.1-py2.7.Egg-info '

J'ai trouvé la réponse ici

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

Ça marche pour moi :)

12
Evelin Ponce

La même erreur se produisait 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
skipper21

Cela a fait le tour pour moi.

Sudo pip install - scrapy installé par ignore

5
Miss Haha

J'ai essayé une combinaison de quelques réponses et cela a finalement fonctionné:

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

À votre santé

4
saza

réinstallez python:

brasser installer python

essayez à nouveau:

Sudo pip installer scrapy

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

2
dominicli

Redémarrez Mac -> maintenez la touche "Commande + R" enfoncée après le carillon de démarrage -> Ouvre les utilitaires OS X -> Ouvrez le terminal et tapez "csrutil désactivé" -> Redémarrez OS X -> ouvrez le terminal et cochez la case "État csrutil".

1
Sandeep

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

1
user3860984

Cette commande fonctionnerait parfaitement bien: D

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

1
  1. - fermez SIP (protection de l'intégrité du système) - puis redémarrez, utilisez commande + R pour passer en mode débogage, puis sélectionnez terminal: csrutil désactiver le redémarrage

2.

Sudo C_INCLUDE_PATH =/Applications/Xcode.app/Contenu/Developer/Platforms/MacOSX.platform/Developer/SDKs/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/ inclure pip installer scrapy - six installés par Ignore

3. - puis retirez l’ancien six, puis réinstallez-le lib/python/six * Sudo pip installe six

4. - puis le redéfinir csrutil enable reboot

- merdique fonctionne maintenant

0
jimmyzhouj