2015-10-01 5 views
25

Zrobiłem sudo pip install -U nltk zgodnie z sugestią zawartą w dokumentacji nltk. jednak otrzymuję następujący wynik:Nie można zainstalować nltk na Mac OS El Capitan

Collecting nltk 
    Downloading nltk-3.0.5.tar.gz (1.0MB) 
    100% |████████████████████████████████| 1.0MB 516kB/s 
Collecting six>=1.9.0 (from nltk) 
    Downloading six-1.9.0-py2.py3-none-any.whl 
Installing collected packages: six, nltk 
    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/basecommand.py", line 211, in main 
    status = self.run(options, args) 
    File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 311, in run 
    root=options.root_path, 
    File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 640, in install 
    requirement.uninstall(auto_confirm=True) 
    File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 716, in uninstall 
    paths_to_remove.remove(auto_confirm) 
    File "/Library/Python/2.7/site-packages/pip/req/req_uninstall.py", line 125, in remove 
    renames(path, new_path) 
    File "/Library/Python/2.7/site-packages/pip/utils/__init__.py", line 315, 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-7dp3on-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info' 

Zasadniczo, to nie jest w stanie uaktualnić sześć od 1.4.1 do 1.9.0. Próbowałem zrobić to osobno, ale dostałem ten sam błąd.

Wspominam El Capitan, ponieważ niektóre osoby mają problemy z innymi instalacjami Pythona na El Capitan i zastanawiam się, czy to z tego powodu.

Czy ktoś wie, jak rozwiązać ten problem?

+0

Co jest warte, mam ten sam problem, próbując zainstalować próbę –

+0

Mam ten sam problem z instalacją 'virtualenvwrapper' – tohster

+0

Pytania są omawiane tutaj: http: // apple. stackexchange.com/questions/209572/how-to-use-pip-after-the-el-capitan-max-os-x-upgrade – hectorpal

Odpowiedz

38

Oto sposób jak naprawiłem kwestie:

Najpierw należy zainstalować Xcode CLI:

xcode-select --install 

Potem ponowna Python:

sudo brew reinstall python 

wreszcie zainstalować nltk:

sudo pip install -U nltk 

Nadzieja to pomaga :)

+0

Nawet po wykonaniu tych kroków nadal pojawia się błąd: Plik "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", wiersz 103, w copystat os. chflags (dst, st.st_flags) – Chef1075

+2

Nie ma potrzeby "sudo" na naparach, ani też w "pip". W innych postach pojawiło się rozwiązanie, które powoduje wyłączenie ustawień bezpieczeństwa, ale jest niebezpieczne. To prawidłowe rozwiązywanie problemów :) – 3manuek

2

Miałem ten sam problem. Używam naparu do zarządzania paczkami. więc najpierw musisz uruchomić brew doctor Zostanie wyświetlona lista problemów z konfiguracją, popraw je. W moim przypadku/usr/local nie było zapisu, więc musiałem naprawić

Następnie uruchom

brew reinstall python 

to ustalone mój problem i byłem wtedy w stanie zainstalować pakiety przy użyciu pip

17

wiem, że jest mnóstwo out 'Brew Dopalacze' tam, ale nie należy trzeba użyć innego pythona dla czegoś tak podstawowego. Jeśli zależność zostanie znaleziona przez pip w/System, jak powiedzieli na South Park, "będziesz miał zły czas". Jeśli nie musisz wprowadzać tej zmiany w całym systemie, możesz po prostu pip install --user <package> i dodać $HOME/Library/Python/2.7/bin do ścieżki powłoki (przez ~/.bash_profile, itp.).

4

system Python nie można uaktualnić lub zmieniona przez pip ze względu na zupełnie nowy mechanizm system Integrity Protection który wyłącza wszystkie zmiany w katalogu systemowym nawet „root”. Można wyłączyć SIP w środowisku przywracania poprzez kierunkach dostępnych gdzie indziej (np http://www.howtogeek.com/230424/how-to-disable-system-integrity-protection-on-a-mac-and-why-you-shouldnt/), ale lepszym rozwiązaniem jest użycie argumentu --user zainstalować w lokalnym katalogu:

pip install --user nltk

ten będzie następnie pozostawić NLTK w lokalnej katalog domowy.

> python 
>>> import nltk 
>>> nltk 
>>> <module 'nltk' from '/Users/yourusername/Library/Python/2.7/lib/python/site-packages/nltk/__init__.pyc'> 

Oczywiście, jeśli próbujesz zainstalować coś dostępny globalnie, że nie będzie działać, ale jeśli wszystko, co próbujemy zrobić, to zainstalować rzeczy, które masz zamiar uruchomić z własnego identyfikatora użytkownika to działa w porządku.

+0

To jest miłe obejście. Dziękuję –

2

W porządku „, a następnie:

prosta prosta prosta prawda jest hybrydą odpowiedź z kilkoma innymi przedstawianej tutaj:

  1. System Integrity Protection ogranicza dostęp do/Library jako korzeń Mac OS X Katalog główny katalogu.
  2. nie trzeba nawet sudo lub ponownej instalacji pakietów systemowych itp
  3. pip zainstalować --user NLTK działa "pip -U zainstalować ..." nie
  4. ma pip install - -user używa dostępnego katalogu $ HOME/Library/Python/2.7/bin ... który możesz dodać do swojej ścieżki powłoki (przez ~/.bash_profile, itp.).
  5. Jest to o wiele bardziej elegancki niż posiadające wiele instaluje Pythona i konieczności napar itp

Amen

8

oba te powodują sześć wersji 1.41:

pip install --ignore-installed six

pip install awsebcli --upgrade --ignore-installed six

Sposób obejścia tego problemu jest tym, który ma sens, imo. Jeśli Apple potrzebuje własnej kopii Pythona dla El Capitan, może ją mieć. Mój jest teraz tutaj: /usr/local/bin/python

+0

piękna metoda – beautifulcode

+0

ignorowana-zainstalowana działała jak wdzięk, dziękuję bardzo – jimh