python installer - "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)




9 Answers

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

J'étais capable de le résoudre en faisant un

brew install python

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

documentation command

J'essaye d'installer le cadre de Scrapy Python dans OSX 10.11 (El Capitan) par l'intermédiaire de 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 fonction 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.

Toute idée ou idée de mes collègues StackExchangers?

Si cela 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'



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 que ce paquet dans l'utilisateur actuel, vous devriez pouvoir l'installer correctement, sans avoir besoin de désactiver le SIP, en utilisant l' --user . Comme ça:

sudo pip install --user packagename



Avertissements

Je suggérerais très fortement contre la modification du système Python sur Mac; De nombreux problèmes peuvent survenir.

Votre erreur particulière montre que le programme d'installation a 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 garder l'installation du système stable et comme initialement installé par Apple.

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

Solutions de gestionnaire de paquets:

S'il vous plaît regardez dans un outil de virtualisation Python comme virtualenv abord; Cela vous permettra d'expérimenter en toute sécurité.

Un autre outil utile pour utiliser les langages et les logiciels sans 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 langages et outils.

Installation du logiciel "Faites le vôtre":

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 la racine 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 le réactiver en utilisant certaines des techniques décrites dans Désactiver le système. Intégrité-Protection .




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

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.

--ATTENTION

Vous devriez activer à nouveau SIP après que tout fonctionne;

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




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

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

MacBook-Air:~ shree$ scrapy version
Scrapy 1.4.0



Installez à nouveau Python:

infuser installer python

Essaye encore:

sudo pip installer scrapy

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




Redémarrer Mac -> maintenez "Commande + R" après le carillon de démarrage -> Ouvre OS X Utilities -> Ouvrir Terminal et tapez "csrutil disable" -> Redémarrer OS X -> Ouvrir Terminal et vérifier "état csrutil"




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




ça marche pour moi:

pip install scrapy --user -U



Related