Python 2.7 - 语法检查 1.3.1 库:HTTP 错误 400:错误请求

Python 2.7 - grammar-check 1.3.1 library: HTTP Error 400: Bad Request

我正在尝试将 grammar-check 1.3.1 库用于 Python

我已经使用 pip 命令安装了它

$ pip install --upgrade 3to2

$ pip install --upgrade language-check

我还从 link 中解压缩了 LanguageTool 文件并将其移动到 C:\Users\me\AppData\Roaming\Python\Python27\site-packages\grammar_check

然后我尝试运行一个测试程序

import grammar_check
tool = grammar_check.LanguageTool('en-GB')
text = 'This are bad.'
matches = tool.check(text)
len(matches)

但是我得到了这个错误:

Traceback (most recent call last):
  File "grammar-checker-test.py", line 2, in <module>
    tool = grammar_check.LanguageTool('en-GB')
  File "C:\Users\me\AppData\Roaming\Python\Python27\site-packages\grammar_check\__init__.py", line 196, in __init__
    self._language = LanguageTag(language)
  File "C:\Users\me\AppData\Roaming\Python\Python27\site-packages\grammar_check\__init__.py", line 405, in __new__
    return unicode.__new__(cls, cls._normalize(tag))
  File "C:\Users\me\AppData\Roaming\Python\Python27\site-packages\grammar_check\__init__.py", line 426, in _normalize
    for language in get_languages())
  File "C:\Users\me\AppData\Roaming\Python\Python27\site-packages\grammar_check\__init__.py", line 485, in get_languages
    languages = LanguageTool._get_languages()
  File "C:\Users\me\AppData\Roaming\Python\Python27\site-packages\grammar_check\__init__.py", line 286, in _get_languages
    for e in cls._get_root(url, num_tries=1):
  File "C:\Users\me\AppData\Roaming\Python\Python27\site-packages\grammar_check\__init__.py", line 311, in _get_root
    raise Error(u'{}: {}'.format(cls._url, e))
grammar_check.Error: http://127.0.0.1:8081: HTTP Error 400: Bad Request

如何解决这个错误?

问题是我没有运行安装 LanguageTool 服务器。

为此,我必须检查我的 grammar_check 文件夹中是否有 LanguageTool 文件夹(其版本必须 < 3.3,在我的例子中是 2.2)。

然后使用 cmd shell 我必须进入这个 LanguageTool 文件夹,在我的例子中它位于这个路径中:

C:\Users\me\AppData\Roaming\Python\Python27\site-packages\grammar_check\LanguageTool-2.2

然后,我必须 运行 使用此命令的服务器

java -cp languagetool-server.jar org.languagetool.server.HTTPServer --port 8081

瞧瞧 grammar_check 运行良好

我有这个错误:

grammar_check.Error: http://127.0.0.1:8081:

我不确定为什么您必须在本地计算机上启动服务器,因为这段代码正是这样做的:

tool = grammar_check.LanguageTool('en-GB')

如果您将在 8081 上再有一个 language_tool 服务器 运行ning,那么它会尝试在端口 8082 上启动服务器,即使它在 8083 上很忙,然后也会失败(这在我的情况下发生了)。

无论如何,由于我的错误,我不得不进行大量调试,最后发现服务器无法 运行 因为我的 JAVA 运行 时间环境被搞砸了。