psutil.AccessDenied尝试加载StanfordCoreNLP时出错

时间:2018-03-04 21:11:18

标签: python-3.x nlp connection stanford-nlp psutil

我正在尝试加载程序包StanfordCoreNLP以正确解析其页面中显示的电影评论(https://nlp.stanford.edu/sentiment/treebank.html):(我使用MAC)

nlp = StanfordCoreNLP("/Users//NLP_models/stanford-corenlp-full-2018-01-31")

但是得到错误:

Traceback (most recent call last):
  File "/Users/anaconda3/lib/python3.6/site-packages/psutil/_psosx.py", line 295, in wrapper
    return fun(self, *args, **kwargs)
  File "/Users/anaconda3/lib/python3.6/site-packages/psutil/_psosx.py", line 480, in connections
    rawlist = cext.proc_connections(self.pid, families, types)
PermissionError: [Errno 1] Operation not permitted

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 2411, in <module>
    globals = debugger.run(setup['file'], None, None, is_module)
  File "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevd.py", line 1802, in run
    launch(file, globals, locals)  # execute the script
  File "/Applications/PyCharm CE.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc) 

...
...
...

File "/Users/anaconda3/lib/python3.6/site-packages/stanfordcorenlp/corenlp.py", line 79, in __init__
if port_candidate not in [conn.laddr[1] for conn in psutil.net_connections()]:

File "/Users/anaconda3/lib/python3.6/site-packages/psutil/__init__.py", line 2191, in net_connections
    return _psplatform.net_connections(kind)
  File "/Users/anaconda3/lib/python3.6/site-packages/psutil/_psosx.py", line 229, in net_connections
    cons = Process(pid).connections(kind)
  File "/Users/anaconda3/lib/python3.6/site-packages/psutil/_psosx.py", line 300, in wrapper
    raise AccessDenied(self.pid, self._name)
psutil.AccessDenied: psutil.AccessDenied (pid=5488)

我试过

conda update conda
conda update anaconda-navigator
conda update navigator-updater

但它没有帮助。 任何想法??

谢谢!

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,可以通过使用sudo来运行代码来使其正常工作,如下所示:

sudo /Users/edamame/workspace/git/chinese_nlp/venv/bin/python3 chinese_segmenter1.py

希望这对您也有用。

答案 1 :(得分:0)

这里也有同样的问题。

对此的大量讨论指向https://github.com/ContinuumIO/anaconda-issues/issues/1984,建议更新到最新的Navigator,并以root身份运行(通过sudo)。

我已经尝试过两者并且看不到任何改变(你可能更幸运)。

https://github.com/Lynten/stanford-corenlp/issues/26引用了corenlp.py的调整版本,声称可以避免这个问题,但我还没有让它工作。

答案 2 :(得分:0)

此问题似乎是特定于Mac OS X的,它不允许Python检查当前端口。

注释corenlp.py文件的这段代码:

        if self.port is None:
        for port_candidate in range(9000, 65535):
            if port_candidate not in [conn.laddr[1] for conn in psutil.net_connections()]:
                self.port = port_candidate
                break

        if self.port in [conn.laddr[1] for conn in psutil.net_connections()]:
            raise IOError('Port ' + str(self.port) + ' is already in use.')

替换此行:

        self.port = 9999

来源:https://github.com/Lynten/stanford-corenlp/issues/26#issuecomment-445507811

另一种解决方案是使用sudo命令行运行StanfordCoreNLP。