web-dev-qa-db-fra.com

Impossible d'installer nltk sur Mac OS El Capitan

J'ai fait Sudo pip install -U nltk comme suggéré par la documentation nltk . Cependant, je reçois le résultat suivant:

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'

Fondamentalement, il est impossible de mettre à niveau six de 1.4.1 à 1.9.0. J'ai essayé de le faire séparément mais j'ai eu la même erreur.

Je mentionne El Capitan parce que certaines personnes rencontrent des problèmes pour l'installation d'autres pythons sur El Capitan et je me demande si cela est dû à cela. 

Est-ce que quelqu'un sait comment résoudre ce problème?

25
proutray

Voici comment j'ai résolu les problèmes:

Commencez par installer Xcode CLI:

xcode-select --install

Puis réinstallez Python:

Sudo brew reinstall python

Enfin, installez nltk:

Sudo pip install -U nltk

J'espère que ça aide :)

38
nvg58

Je sais qu'il y a beaucoup de «boosters de bière», mais vous ne devriez pas avoir besoin d'un autre python pour quelque chose d'aussi basique. Si pip trouve une dépendance dans/System, comme ils l'ont dit dans South Park, «vous allez passer un mauvais moment». Si vous n'avez pas besoin d'effectuer cette modification à l'échelle du système, vous pouvez simplement pip install --user <package> et ajouter $HOME/Library/Python/2.7/bin à votre chemin d'accès Shell (via ~/.bash_profile, etc.).

17
Sacrilicious

les deux résultent dans six version 1.41:

pip install --ignore-installed six

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

la solution de contournement est celle qui a du sens, imo. Si Apple a besoin de sa propre copie de Python pour El Capitan, elle peut l’avoir. Le mien est maintenant ici: /usr/local/bin/python

8
Monte Hayward

Le système Python ne peut pas être mis à niveau ni modifié par pip en raison du tout nouveau mécanisme System Integrity Protection qui désactive toutes les modifications apportées au répertoire système même par «root». Vous pouvez désactiver SIP depuis l’environnement de récupération via des instructions disponibles ailleurs (par exemple, http://www.howtogeek.com/230424/how-to-disable-system-integrity-protection-on-a-mac- et-pourquoi-vous-devriez-pas/ ) mais une meilleure solution consiste à utiliser l'argument --user à installer dans votre répertoire local:

pip installer --user nltk

Cela laissera ensuite nltk dans votre répertoire de base local. 

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

Clairement, si vous essayez d'installer quelque chose globalement accessible qui ne fonctionnera pas, mais si vous essayez simplement de faire, c'est d'installer des choses que vous allez exécuter à partir de votre propre ID utilisateur, cela fonctionne bien.

4
eric.green

J'ai eu le même problème… .. J'utilise brasser pour gérer les paquets. donc vous devez d’abord exécuter brew doctorIl va lister les problèmes avec votre configuration, les corriger. Dans mon cas,/usr/local n'était pas accessible en écriture, j'ai donc dû le réparer.

Puis courir

brew reinstall python

Cela a résolu mon problème et j'ai ensuite pu installer des paquets à l'aide de pip

2
saggu

Très bien 'alors :

la simple simple vérité simple est une réponse hybride de quelques autres énoncées ici:

  1. La protection de l'intégrité du système limite l'accès à/Library en tant que racine du répertoire système Mac OS X racine.
  2. vous n'avez même pas besoin de Sudo ou de la réinstallation de packages système, etc.
  3. pip install --user nltk fonctionne, "pip install -U ..." ne fonctionne pas 
  4. pip install --user utilise le répertoire accessible $ HOME/Library/Python/2.7/bin ... que vous pouvez ajouter à votre chemin Shell (via ~/.bash_profile, etc.).
  5. C'est beaucoup plus élégant que d'avoir plusieurs installations de python et d'avoir besoin d'une infusion, etc.

Amen

Si vous avez déjà créé le répertoire/usr/local, exécutez cette commande dans le terminal:

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

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

0
user1797498