2016-01-27 22 views
6

Wstęp: Instalacja w Pythonie w moim systemie OS X to bałagan. Zacząłem używać systemu Python, zanim dowiedziałem się o Homebrew. I tak używam sudo pip install od zawsze. Teraz próbuję oczyścić wszystko, a następnie zainstalować/połączyć pakiety pip przeciwko Python Homebrew.Nie można odinstalować "sudo pip uninstall" (/ tmp) w OS X El Capitan

1) W wielu odpowiedziach SO ludzie sugerują: pip freeze | xargs sudo pip uninstall -y To nie działa dla mnie. Dostaję bardzo długi trop. Są to najbardziej reprezentatywne kawałki to:

~ $ 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'")] 

gdzie altgraph to tylko pierwszy pakiet pip w pip list (o tym pamiętać).

2) Próbowałem następnie pip freeze | xargs sudo -H pip uninstall -y, jak sugerowało ostrzeżenie, ale to po prostu usuwa ostrzeżenie. Komunikaty o błędach nadal występowały.

3) Próbowałem także chowania wszelkich katalogów, które podniosły skargi (np. ~/Library/Caches/pip oraz niektórych z jego rodziców i dzieci). Z jakiegoś powodu nie mogę chown katalog najbardziej problematyczne, /tmp:

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

4) Wreszcie, próbowałem ręcznie odinstalowaniu pakietu z dalej w dół listy i voila, mogę łatwo zrobić sudo pip uninstall virtualenv na przykład. Próba ręcznego odinstalowania altgraph powoduje ten sam błąd powyżej.

Jakieś pomysły, jak postępować? Pamiętaj, że nie obchodzi mnie żadna paczka; Po prostu chcę nuke pip i zaczynać od zera używając Pythona Homebrew. Dzięki!

Aktualizacje:

  1. Schodząc listę ręcznie, to samo dzieje się z bdist-mpkg-0.5.0
  2. kilka więcej: matplotlib, zope.interface, xattr, six, scipy, pytz.

Odpowiedz

9

Jestem pewien, że brew reinstall python w jakiś sposób naprawiłem kilka problemów, które miałem. Potem musiał również Nuke (tj rm -rf) kilka rzeczy w /usr/local/lib/python2.7/site-packages

Emisji i odpowiedzi związane z moim konkretnym przypadku użycia (instalacja ROS na OS X): https://github.com/mikepurvis/ros-install-osx/issues/11

+1

Miałem dokładnie ten sam problem podczas instalacji ROS. Pomogło, dzięki! –

+0

Co trzeba było usunąć z 'site-packages'? –

+0

Nie pamiętam Lenara, przepraszam. Myślę, że usunąłem rzeczy, które nie zostały tam umieszczone przez 'pip' –

1

Nie używaj Homebrew ani MacPorts, ani wbudowanego Pythona. Są to zagnieżdżone rozwiązania, które ostatecznie zawiodą, tak czy inaczej (PEP20: flat jest lepsze niż zagnieżdżone). W każdym razie będziesz musiał poczekać, aż system zarządzania pakietami zauważy jakiekolwiek aktualizacje PyPI, lub cofnie się do używania pip, tak jak zrobiłbyś to bez menedżera pakietów. Używaj MacPorts do instalowania tylko elementów innych niż Python, które wymagają kompilacji i dostosowania (np. ATLAS).

Najprostszą rzeczą do zrobienia jest zainstalowanie samodzielnego Pythona z python.org (z dystrybucji binarnej lub ze źródła). Nie sudo, zainstaluj pod swoim użytkownikiem. Następnie:

pip install -U pip setuptools virtualenvwrapper 

Źródło Twój otoki z ~/.bashrc za ich docs i makevirtualenv foo. Wszystkie inne prace będą wykonywane tylko w środowiskach wirtualnych. Jeśli używasz Python 3, to virtualenv jest częścią interpretera, więc nie potrzebujesz virtualenvwrapper i małego tańca z nim związanego.

+0

Dzięki Γιάννη. Od pewnego czasu zamierzam zacząć używać 'virtualenv'; ten problem może być koniecznym posunięciem. Moja motywacja do zagłębiania się w ten bałagan pochodzi głównie z próby zainstalowania ROS na OS X (https://github.com/mikepurvis/ros-install-osx). Prawdopodobnie można to zrobić za pomocą 'virtualenv', ale postępowałem zgodnie z instrukcjami do tee. –

+1

Myślę, że kiedyś zainstalowałem ROS przez MacPorts, ale jeśli zrobiłem to innym razem, to wolałbym instalować ze źródła. Dla każdej rzeczy budowanie ze źródła za pierwszym razem może zająć trochę czasu, ale może być zautomatyzowane za pomocą skryptu bash. –

Powiązane problemy