web-dev-qa-db-de.com

Nltk kann nicht unter Mac OS El Capitan installiert werden

Ich habe Sudo pip install -U nltk gemacht, wie in der nltk-Dokumentation vorgeschlagen. Ich erhalte jedoch die folgende Ausgabe:

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'

Grundsätzlich ist es nicht möglich, sechs von 1.4.1 auf 1.9.0 zu aktualisieren. Ich habe das separat versucht, bekam aber den gleichen Fehler.

Ich erwähne El Capitan, weil einige Leute Probleme mit anderen Python-Installationen auf El Capitan haben und ich frage mich, ob dies daran liegt. 

Weiß jemand, wie man dieses Problem löst?

25
proutray

So habe ich die Probleme behoben:

Installieren Sie zuerst Xcode CLI:

xcode-select --install

Dann Python neu installieren:

Sudo brew reinstall python

Installieren Sie schließlich nltk:

Sudo pip install -U nltk

Ich hoffe es hilft :)

38
nvg58

Ich weiß, dass es eine Menge 'Brew Booster' gibt, aber Sie sollten keinen anderen Python für etwas so grundlegendes verwenden. Wenn eine Abhängigkeit von pip in/System gefunden wird, wie sie in South Park gesagt haben: "Sie werden eine schlechte Zeit haben". Wenn Sie diese Änderung nicht systemweit vornehmen müssen, können Sie einfach pip install --user <package> hinzufügen und $HOME/Library/Python/2.7/bin zu Ihrem Shell-Pfad hinzufügen (über ~/.bash_profile usw.).

17
Sacrilicious

beide ergeben sechs Versionen 1.41:

pip install --ignore-installed six

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

der Brew Workaround ist derjenige, der Sinn macht, imo. Wenn Apple eine eigene Python-Version für El Capitan benötigt, kann sie es haben. Mine ist jetzt hier: /usr/local/bin/python

8
Monte Hayward

Das System Python kann aufgrund des brandneuen System Integrity Protection-Mechanismus, durch den alle Änderungen des Systemverzeichnisses von "root" deaktiviert werden, nicht per pip aktualisiert oder geändert werden. Sie können SIP in der Wiederherstellungsumgebung mithilfe von Anweisungen deaktivieren, die an anderer Stelle verfügbar sind (z. B. http://www.howtogeek.com/230424/wie- and-why-you-shouldnt/ ), aber eine bessere Lösung ist die Verwendung des Arguments --user zur Installation in Ihrem lokalen Verzeichnis:

pip install --user nltk

Dadurch bleibt nltk in Ihrem lokalen Basisverzeichnis. 

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

Wenn Sie versuchen, etwas zu installieren, das global zugänglich ist, funktioniert das nicht. Wenn Sie jedoch nur Dinge installieren möchten, die Sie mit Ihrer eigenen Benutzer-ID ausführen, funktioniert das problemlos.

4
eric.green

Ich hatte das gleiche Problem ... Ich verwende brew, um Pakete zu verwalten. Sie müssen also zuerst brew doctor ausführen. Sie werden die Probleme mit Ihrem Setup auflisten, korrigieren. In meinem Fall war/usr/local nicht beschreibbar, also musste ich es reparieren

Dann renne

brew reinstall python

Dies behebte mein Problem und ich konnte Pakete mit pip installieren

2
saggu

Alles kar :

die einfache einfache Wahrheit ist eine hybride Antwort von ein paar anderen, die hier formuliert wurden:

  1. System Integrity Protection beschränkt den Zugriff auf/Library als Root-Verzeichnis von Mac OS X System.
  2. Sie brauchen nicht einmal Sudo oder die Neuinstallation von Systempaketen usw.
  3. pip install --user nltk funktioniert, "pip install -U ..." nicht 
  4. pip install --user verwendet das zugängliche Verzeichnis $ HOME/Library/Python/2.7/bin ..., das Sie Ihrem Shell-Pfad hinzufügen können (über ~/.bash_profile usw.).
  5. Dies ist weitaus eleganter als mehrere Installationen von Python und das Brauen usw.

Amen

Wenn Sie das Verzeichnis/usr/local bereits erstellt haben, führen Sie den folgenden Befehl in terminal aus:

Sudo chown $ (whoami): admin/usr/local && Sudo chown -R $ (whoami): admin/usr/local

von http://digitizor.com/2015/10/01/fix-homebrew-permissions-osx-el-capitan/

0
user1797498