无法在 Mac OS El Capitan 上安装 nltk

Unable to install nltk on Mac OS El Capitan

我按照 nltk 文档的建议做了 sudo pip install -U nltk。 但是,我得到以下输出:

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'

基本上无法将六从1.4.1升级到1.9.0。我尝试单独执行此操作,但出现了同样的错误。

我提到 El Capitan 是因为有些人在 El Capitan 上安装其他 python 时遇到问题,我想知道这是不是因为这个。

有谁知道如何解决这个问题?

我遇到了同样的问题。 我使用 brew 来管理包。所以首先你必须 运行 brew doctor 它将列出您的设置问题,并进行更正。在我的情况下 /usr/local 不可写,所以我必须修复它

然后运行

brew reinstall python

这解决了我的问题,然后我就可以使用 pip 安装软件包了

以下是我解决问题的方法:

首先,安装Xcode CLI:

xcode-select --install

然后重新安装Python:

sudo brew reinstall python

最后,安装nltk

sudo pip install -U nltk

希望对您有所帮助:)

我知道那里有很多 'brew boosters',但您不需要为如此基本的东西使用另一个 python。如果 pip 在 /System 中找到依赖项,正如他们在南方公园中所说的那样,“你将度过一段糟糕的时光”。如果您不需要在系统范围内进行此更改,您可以 pip install --user <package> 并将 $HOME/Library/Python/2.7/bin 添加到 shell 路径(通过 ~/.bash_profile 等)。

如果您已经创建了 /usr/local 目录,那么 运行 在终端中执行此命令:

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

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

系统Python无法通过pip升级或更改,因为全新的系统完整性保护机制禁止对系统目录的所有更改,甚至'root'。您可以通过其他地方可用的说明(例如 http://www.howtogeek.com/230424/how-to-disable-system-integrity-protection-on-a-mac-and-why-you-shouldnt/ )从恢复环境中禁用 SIP,但更好的解决方案是使用 --user 参数安装到您的本地目录:

pip install --user nltk

这会将 nltk 留在您的本地主目录中。

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

很明显,如果您尝试安装全局可访问的东西,但这是行不通的,但如果您要做的只是安装您将要从自己的用户 ID 运行 安装的东西它工作正常。

好吧'然后:

简单简单的简单真理是此处提出的其他几个答案的混合答案:

  1. 系统完整性保护限制以根用户身份访问 /Library Mac OS X 系统目录根目录。
  2. 您甚至不需要 sudo 或重新安装系统软件包等
  3. pip install --user nltk 有效,"pip install -U ..." 无效
  4. pip install --user 使用可访问的 $HOME/Library/Python/2.7/bin 目录...您可以将其添加到 shell 路径(通过 ~/.bash_profile,等)。
  5. 这比安装多个 python 和需要 brew 等要优雅得多

阿门

这两个结果产生了六个版本 1.41:

pip install --ignore-installed six

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

我认为 brew 解决方法是有意义的。如果 Apple 需要自己的 El Capitan 副本 Python,它可以拥有它。我的现在在这里:/usr/local/bin/python