首页 > 解决方案 > 在 Pycharm 中使用 StanfordCoreNLP 时 psutil.AccessDenied?

问题描述

# coding=utf-8

from stanfordcorenlp import StanfordCoreNLP

nlp = StanfordCoreNLP(r'/Users/silas/stanford-corenlp/', lang='zh')

sentence = '清华大学位于北京。'
print nlp.word_tokenize(sentence)
print nlp.pos_tag(sentence)
print nlp.ner(sentence)
print nlp.parse(sentence)
print nlp.dependency_parse(sentence)

nlp.close()

我正在使用 Mac。Java、NLKT 和 Stanforcorenlp 工具包都准备好了。当我测试项目时,错误出现了。

Traceback (most recent call last):
  line 5, in <module>
    nlp = StanfordCoreNLP(r'/Users/silas/stanford-corenlp/', lang='zh')
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/stanfordcorenlp/corenlp.py", line 79, in __init__
    if port_candidate not in [conn.laddr[1] for conn in psutil.net_connections()]:
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/psutil/__init__.py", line 2120, in net_connections
    return _psplatform.net_connections(kind)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/psutil/_psosx.py", line 255, in net_connections
    cons = Process(pid).connections(kind)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/psutil/_psosx.py", line 347, in wrapper
    raise AccessDenied(self.pid, self._name)
psutil._exceptions.AccessDenied: psutil.AccessDenied (pid=25422)

我猜这是因为 Pycharm 项目没有在 root 用户下运行。但是如何配置 IDE 来解决问题?

标签: pythonpython-2.7stanford-nlppython-2.x

解决方案


不幸的是,如果您查看 _psosx.py 中的 psutil 项目,在 net_connections 下,第 243 行说..

注意:在 macOS 上,除非进程由 root 拥有,否则这将失败并显示 AccessDenied。

这意味着您需要通过执行类似的操作以 root 身份运行sudo pycharm.sh

如果您不想以 root 身份运行整个 IDE,这里有一些关于如何以超级用户权限运行特定脚本的示例。例如,请参阅使用 sudo 权限在 pyCharm 中进行调试


推荐阅读