2016-01-27 37 views
6

Prefazione: L'installazione di My OS X Python è mess. Ho iniziato ad usare il sistema Python prima di scoprire l'homebrew. E così ho usato sudo pip install da sempre. Ora sto cercando di ripulire tutto e quindi installare/collegare i pacchetti pip contro Python di Homebrew.Impossibile eseguire l'operazione "sudo pip uninstall" non consentita (/ tmp) in OS X El Capitan

1) In molte risposte SO, le persone suggeriscono di fare: pip freeze | xargs sudo pip uninstall -y Questo non funziona per me. Ottengo un traceback molto lungo. Questi sono i pezzi più rappresentativi di essa:

~ $ pip freeze | xargs sudo pip uninstall -y 
You are using pip version 7.1.2, however version 8.0.2 is available. 
You should consider upgrading via the 'pip install --upgrade pip' command. 
The directory '/Users/smaniato/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 
Uninstalling altgraph-0.10.2: 
Exception: 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 211, in main 
[...] 
Error: [('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.py', '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.py', "[Errno 1] Operation not permitted: '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.pyc', '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.pyc', 
[...] 
"[Errno 1] Operation not permitted: '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph'")] 

dove altgraph è solo il primo pacchetto pip in pip list (tenere a mente).

2) Ho quindi provato pip freeze | xargs sudo -H pip uninstall -y, come suggerito, ma questo semplicemente rimuove l'avviso. I messaggi di errore persistevano.

3) Ho anche provato a chowning qualsiasi directory che ha sollevato reclami (ad esempio, ~/Library/Caches/pip e alcuni dei suoi genitori e figli). Per qualche ragione, non posso chown directory più problematico, /tmp:

~ $ sudo chown -R ${USER} /tmp 
chown: /tmp: Operation not permitted 

4) Infine, ho provato manualmente rimozione di un pacchetto da più in basso nella lista e voilà, ho potuto facilmente fare sudo pip uninstall virtualenv per esempio. Il tentativo di disinstallare manualmente i risultati altgraph ha lo stesso errore sopra riportato.

Qualche idea su come procedere? Ricorda, non mi interessa alcun pacchetto; Voglio solo nuke pip e iniziare da zero usando Homebrew's Python. Grazie!

Aggiornamenti:

  1. Scendendo nella lista manualmente, la stessa cosa accade con bdist-mpkg-0.5.0
  2. Un po 'di più: matplotlib, zope.interface, xattr, six, scipy, pytz.

risposta

9

Sono abbastanza sicuro che il brew reinstall python abbia risolto in qualche modo un mucchio dei problemi che stavo avendo. Poi ho dovuto anche Nuke (vale a dire, rm -rf) alcune cose in /usr/local/lib/python2.7/site-packages

Problema e risposta relativi al mio specifico caso d'uso (installazione ROS su OS X): https://github.com/mikepurvis/ros-install-osx/issues/11

+1

Ho avuto lo stesso identico problema durante l'installazione di ROS. Questo ha aiutato, grazie! –

+0

Cosa dovevi rimuovere da 'site-packages'? –

+0

Non ricordo Lenar, mi dispiace. Penso di aver cancellato cose che non erano state collocate lì da 'pip' –

1

Non utilizzare Homebrew né MacPorts, né il built-in Python. Queste sono soluzioni annidate che alla fine falliranno, in un modo o nell'altro (PEP20: flat è meglio di nidificato). Per lo meno, dovrai aspettare che il sistema di gestione dei pacchetti noti gli aggiornamenti di PyPI, o ricorrere all'utilizzo di pip come avresti fatto comunque senza alcun gestore di pacchetti. Usa MacPorts per installare solo elementi non Python che devono essere compilati e personalizzati (ad es. ATLAS).

La cosa più semplice da fare è installare un Python standalone da python.org (da una distribuzione binaria o da un sorgente). No sudo, installa sotto il tuo utente. Poi:

pip install -U pip setuptools virtualenvwrapper 

Fonte avvolgitori dal ~/.bashrc secondo le loro documenti, e makevirtualenv foo. Tutti gli altri lavori verranno eseguiti solo in ambienti virtuali. Se usi Python 3, allora l'virtualenv fa parte dell'interprete, quindi non hai bisogno dello virtualenvwrapper e della piccola danza ad esso relativa.

+0

Grazie Γιάννη. Stavo iniziando a usare 'virtualenv' per un po '; questo problema potrebbe essere la spinta di cui avevo bisogno. La mia motivazione per approfondire questo pasticcio deriva principalmente dal tentativo di installare ROS su OS X (https://github.com/mikepurvis/ros-install-osx). C'è probabilmente un modo per farlo usando 'virtualenv', ma stavo seguendo le istruzioni fino a un tee. –

+1

Penso che una volta ho installato ROS tramite MacPorts, ma se l'avessi fatto un'altra volta, allora preferirei installare dal sorgente. Per ogni cosa, costruire dalla sorgente la prima volta può richiedere del tempo, ma può quindi essere automatizzato con uno script bash. –

Problemi correlati