"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'
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.
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
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
brew install python
sudo pip install --user <package name>
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 .
Cela a fait l'affaire pour moi:
sudo pip install scrapy --ignore-installed six
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
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 :)
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
Cela a fait l'affaire pour moi.
Sudo pip install --ignore-scrapy installé
Réinstallez python:
Brew installer python
Essayez à nouveau:
Sudo pip installer scrapy
Fonctionne pour moi, j'espère que cela peut aider
Essayé une combinaison de quelques réponses et cela a finalement fonctionné:
sudo -H pip install --upgrade --ignore-installed awsebcli
Santé
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"
Cette commande fonctionnerait parfaitement bien: D
Sudo-h pip install --upgrade package_name --ignore-installed six
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.
- -- 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
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