psutil.AccessDenied尝试加载StanfordCoreNLP时出错

问题描述 投票:3回答:2

[我正在尝试加载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

但是没有帮助。有什么想法吗?

谢谢!

python-3.x nlp connection stanford-nlp psutil
2个回答
1
投票

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

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

希望这也对您有效。


0
投票

这里有同样的问题。

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

我都尝试过,但完全没有发现变化(您可能会更幸运)。

[https://github.com/Lynten/stanford-corenlp/issues/26引用了corenlp.py的经过调整的版本,该版本声称可以避免该问题,尽管我也没有使其工作。


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。

© www.soinside.com 2019 - 2024. All rights reserved.