OSX El Capitan: sudo pip installa OSError: Operazione non consentita

Quando corro:

sudo pip install ipython 

Ottengo il seguente errore

OSError: [Errno: 1] Operazione non consentita: ‘/System/Library/Frameworks/Python.framework/Versions/2.7/share’

L’ultimo comando eseguito tenta di creare la directory di cui sopra.

Inoltre, il seguente comando non riesce a installare iPython senza fornire alcun errore.

 sudo pip install --user python 

(Sono su Mac OS X El Capitan nel caso in cui altre persone su questo SO vedano lo stesso problema).

    Le istruzioni che dicono sudo pip install sono intrinsecamente sbagliate.

    Se c’è qualche tutorial là fuori che dice che dovresti fare sudo pip ti preghiamo di inviare un bug a questo pacchetto. L’autore sta diseducando la comunità Python, dato che il tempo ha dimostrato che sudo pip è una pratica infranta.

    OSX El Capitan ha introdotto un meccanismo per evitare di danneggiare i file del sistema operativo . /System/Library/Frameworks/Python.framework/Versions/2.7/share è una delle posizioni protette. Un utente normale non ha motivo di mettere o scrivere lì file . Questo perché il sistema operativo stesso si basa su questi file e sudo pip , con tutta la forza fornita da quanto sopra, li sovrascriverebbe incondizionatamente. Di solito le cose brutte non accadono, ma le probabilità ci sono. Apple vuole proteggere i propri utenti del sistema operativo per bloccare accidentalmente la loro installazione.

    Invece, è necessario installare un pacchetto Python, come IPython, localmente nella cartella home dell’utente . Il modo più semplice è creare un ambiente virtuale , triggersrlo e quindi eseguire pip nell’ambiente virtuale.

    Esempio:

     cd ~ # Go to home directory virtualenv my-venv source my-venv/bin/activate pip install IPython 

    Ulteriori informazioni

    • Tutorial di installazione del pacchetto Python ufficiale .

    • Come creare ambienti virtuali .

    In alternativa, si dovrebbe essere in grado di fare pip install --user . Ma ancora, non è necessario sudo ed è necessario impostare manualmente la variabile di ambiente PATH .

    Ho avuto gli stessi problemi, ma l’uso del easy_install "module" easy_install mi ha risolto il problema.

    Non sono sicuro del perché, ma pip e easy_install utilizzano percorsi di installazione diversi e easy_install ha scelto quelli giusti.

    Modifica: senza ricontrollare ma a causa dei commenti; sembra che installazioni diverse (OSX e brew-install) interferiscano l’una con l’altra ed è per questo che gli strumenti citati indicano effettivamente punti diversi (poiché appartengono a installazioni diverse). Capisco che di solito quegli strumenti da un punto di installazione alla stessa cartella.

    Dovresti reinstallare Python:

     brew reinstall python 

    Per ottenere la birra vedere la homepage della birra .

    pip install --ignore-installed six

    Questo farà il lavoro, quindi puoi provare il tuo primo comando.

    Tramite http://github.com/pypa/pip/issues/3165

    Utilizzato pip3 install e risolto il problema di authorization con pip .

    Ho avuto gli stessi problemi. Come altri hanno già detto, non eseguire l’installazione di pip con sudo. Correre

     brew doctor 

    e correggere gli avvertimenti e dovresti essere in grado di procedere con l’installazione del tuo pip.

    Lo stesso errore

     Installing collected packages: six, pyparsing, packaging, appdirs, setuptools Exception: Traceback (most recent call last): File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/basecommand.py", line 215, in main status = self.run(options, args) File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/commands/install.py", line 342, in run prefix=options.prefix_path, File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_set.py", line 784, in install **kwargs File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 851, in install self.move_wheel_files(self.source_dir, root=root, prefix=prefix) File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 1064, in move_wheel_files isolated=self.isolated, File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 345, in move_wheel_files clobber(source, lib_dir, True) File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 323, in clobber shutil.copyfile(srcfile, destfile) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 83, in copyfile with open(dst, 'wb') as fdst: IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/six.py' 

    e qui uso --user senza sudo per risolvere questo problema

     $ pip install --user scikit-image h5py keras pygame Collecting scikit-image Downloading http://mirrors.aliyun.com/pypi/packages/65/69/27a1d55ce8f77c8ac757938707105b1070ff4f2ae47d2dc99461bfae4491/scikit_image-0.13.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (28.1MB) 100% |████████████████████████████████| 28.1MB 380kB/s Collecting h5py Downloading http://mirrors.aliyun.com/pypi/packages/b7/cc/1c29b0815b12de2c92b5323cad60f724ac8f0e39d0166d0b9dfacbcb70dd/h5py-2.7.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.5MB) 100% |████████████████████████████████| 4.5MB 503kB/s Requirement already satisfied: keras in /Library/Python/2.7/site-packages Requirement already satisfied: pygame in /Library/Python/2.7/site-packages Requirement already satisfied: matplotlib>=1.3.1 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from scikit-image) Requirement already satisfied: six>=1.7.3 in /Library/Python/2.7/site-packages (from scikit-image) Requirement already satisfied: pillow>=2.1.0 in /Library/Python/2.7/site-packages (from scikit-image) Requirement already satisfied: networkx>=1.8 in /Library/Python/2.7/site-packages (from scikit-image) Requirement already satisfied: PyWavelets>=0.4.0 in /Library/Python/2.7/site-packages (from scikit-image) Collecting scipy>=0.17.0 (from scikit-image) Downloading http://mirrors.aliyun.com/pypi/packages/72/eb/d398b9f63ee936575edc62520477d6c2353ed013bacd656bd0c8bc1d0fa7/scipy-0.19.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (16.2MB) 100% |████████████████████████████████| 16.2MB 990kB/s Requirement already satisfied: numpy>=1.7 in /Library/Python/2.7/site-packages (from h5py) Requirement already satisfied: theano in /Library/Python/2.7/site-packages (from keras) Requirement already satisfied: pyyaml in /Library/Python/2.7/site-packages (from keras) Requirement already satisfied: python-dateutil in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from matplotlib>=1.3.1->scikit-image) Requirement already satisfied: tornado in /Library/Python/2.7/site-packages (from matplotlib>=1.3.1->scikit-image) Requirement already satisfied: pyparsing>=1.5.6 in /Users/qiuwei/Library/Python/2.7/lib/python/site-packages (from matplotlib>=1.3.1->scikit-image) Requirement already satisfied: nose in /Library/Python/2.7/site-packages (from matplotlib>=1.3.1->scikit-image) Requirement already satisfied: olefile in /Library/Python/2.7/site-packages (from pillow>=2.1.0->scikit-image) Requirement already satisfied: decorator>=3.4.0 in /Library/Python/2.7/site-packages (from networkx>=1.8->scikit-image) Requirement already satisfied: singledispatch in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image) Requirement already satisfied: certifi in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image) Requirement already satisfied: backports_abc>=0.4 in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image) Installing collected packages: scipy, scikit-image, h5py Successfully installed h5py-2.7.0 scikit-image-0.13.0 scipy-0.19.0 

    Spero che possa aiutare qualcuno che incontra problemi simili!

    TL; correzione DR $ PATH

    1. Utilizzare pip install --user package_name per installare un pacchetto che includa i file eseguibili CLI.
    2. Avvia una shell python e import package_name
    3. Trova dove lib/python/... verifica nell’output e sostituisci tutto con bin
    4. È probabile che sia $HOME/Library/Python/2.7/bin

    Dettagli

    A causa della nuova System Integrity Protection in macOS 10.11 El Capitan, non è più sudo pip install . Non ne discuteremo i meriti qui.

    Un’altra risposta spiega che dovresti pip install --user che è corretto. Ma ti hanno inviato ai vicoli per capire cosa fare del tuo $PATH modo da poter accedere agli eseguibili installati. Fortunatamente, ho già risolto un simile bisogno di una domanda non correlata .

    Ecco una trascrizione di come ho risolto il problema su uno dei miei sistemi. Sto includendo tutto piuttosto che il $PATH che ha funzionato per me, perché il tuo sistema potrebbe essere diverso dal mio. Questo processo dovrebbe funzionare per tutti.

     $ pip install --user jp Collecting jp Downloading jp-0.2.4.tar.gz Installing collected packages: jp Running setup.py install for jp ... done Successfully installed jp-0.2.4 $ python -c 'import jp; print jp'  $ find /Users/bbronosky/Library/Python -type f -perm -100 /Users/bbronosky/Library/Python/2.7/bin/jp $ which jp $ echo -e '\n''export PATH=$HOME/Library/Python/2.7/bin:$PATH' >> ~/.bashrc $ bash # starting a new bash process for demo, but you should open a new terminal $ which jp /Users/bbronosky/Library/Python/2.7/bin/jp $ jp usage: jp   

    È difficile convincere Pip a lavorare su El Capitan per diversi motivi:

    1. OS X non imposta correttamente alcune variabili di distutils, quindi pip cerca di installare file secondari in posizioni in /System/Library/ . El Capitan blocca questo, che è l’errore che stai incontrando.
    2. OS X include un numero di pacchetti obsoleti in /System/Library/ . pip vuole spesso aggiornarle ma non può farlo su El Capitan.
    3. OS X posti /System/Library/ superiore nell’ordine di ricerca Python rispetto a /Library/Python/2.7/site-packages (l’ubicazione del pacchetto python a livello di sistema), quindi anche se si riesce a installare le versioni più recenti di alcuni pacchetti, il vecchio quelli ancora vengono caricati, rompendo alcune dipendenze.

    Ci sono soluzioni alternative per tutti questi alla https://apple.stackexchange.com/a/223163/143849 . Ma potrebbe essere meglio installare la tua versione di Python tramite il programma di installazione standard di Python, Homebrew o Anaconda.

    Immagino tu abbia qualche conflitto con altri pacchetti. Per me erano le six . Quindi è necessario utilizzare un comando come questo:

     pip install google-api-python-client --upgrade --ignore-installed six 

    o

    pip install --ignore-installed six

    Sono pienamente d’accordo con Mikko, ma se vuoi ancora farlo, ecco il modo:

    • Riavvia in modalità di ripristino (mantieni cmd + R)
    • Aprire il terminale dalle utility
    • Utilizzare il comando csrutil disable

    Ho python2.7 installato tramite brew e il seguente ha risolto il mio problema

    brew install numpy

    Installa python3, ma funziona ancora e lo configura anche per 2.7.

    Come te, ho avuto lo stesso problema. Sto eseguendo El Capitan e provando ad installare Juypter con python2.7 Ecco come sono riuscito a farlo:

    Innanzitutto installa Juypter (funziona anche con pip3 ):

     sudo -H pip install --ignore-installed six --user --install jupiter 

    Quindi è necessario installare il kernel Python 2.7, altrimenti sarà ansible utilizzare python3 solo per il notebook.

     sudo -H python -m pip install --user --ignore-installed six --upgrade ipykernel python -m ipykernel install --user 

    Questo può essere utile per coloro che desiderano mantenere l’installazione Apple di python2.7 e vogliono usare il notebook Jupyter con python2.7 e python3.

    Questo lo ha fatto per me dopo pip install ipython fallito l’ pip install ipython :

     SF55M:~ 278$ sudo easy_install ipython Searching for ipython Best match: ipython 5.4.1 Adding ipython 5.4.1 to easy-install.pth file Installing ipython script to /usr/local/bin Installing iptest2 script to /usr/local/bin Installing iptest script to /usr/local/bin Installing ipython2 script to /usr/local/bin Using /Library/Python/2.7/site-packages Processing dependencies for ipython Finished processing dependencies for ipython SF55M:~ 278$ pip install ipython Requirement already satisfied: ipython in /Library/Python/2.7/site-packages Requirement already satisfied: prompt-toolkit<2.0.0,>=1.0.4 in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: decorator in /Library/Python/2.7/site- packages (from ipython) Requirement already satisfied: setuptools>=18.5 in /Library/Python/2.7/site- packages/setuptools-19.6.1-py2.7.egg (from ipython) Requirement already satisfied: pickleshare in /Library/Python/2.7/site- packages (from ipython) Requirement already satisfied: pygments in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: pexpect; sys_platform != "win32" in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: pathlib2; python_version == "2.7" or python_version == "3.3" in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: backports.shutil-get-terminal-size; python_version == "2.7" in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: simplegeneric>0.8 in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: traitlets>=4.2 in /Library/Python/2.7/site- packages (from ipython) Requirement already satisfied: appnope; sys_platform == "darwin" in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: six>=1.9.0 in /Library/Python/2.7/site- packages (from prompt-toolkit<2.0.0,>=1.0.4->ipython) Requirement already satisfied: wcwidth in /Library/Python/2.7/site-packages (from prompt-toolkit<2.0.0,>=1.0.4->ipython) Requirement already satisfied: ptyprocess>=0.5 in /Library/Python/2.7/site- packages (from pexpect; sys_platform != "win32"->ipython) Requirement already satisfied: scandir; python_version < "3.5" in /Library/Python/2.7/site-packages (from pathlib2; python_version == "2.7" or python_version == "3.3"->ipython) Requirement already satisfied: enum34; python_version == "2.7" in /Library/Python/2.7/site-packages (from traitlets>=4.2->ipython) Requirement already satisfied: ipython-genutils in /Library/Python/2.7/site- packages (from traitlets>=4.2->ipython) SF55M:~ 212580378$ ipython Python 2.7.10 (default, Feb 7 2017, 00:08:15) Type "copyright", "credits" or "license" for more information. IPython 5.4.1 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: Do you really want to exit ([y]/n)? SF55M:~ 278$ 

    L’ho appena installato usando easy_install

    Ad esempio: $ sudo easy_install networkx