pyenchant не может найти файл словаря в Mac OS X
У меня проблемы с установкой pyenchant на MacbookPro под управлением Lion. Я использовал homebrew и pip для установки enchant и pyenchant
доморощенный установить чары
pip install pyenchant
Я также загрузил словарь английского языка в следующую папку:
/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/enchant/share/enchant/myspell
-rw-r--r-- 1 mycomputer admin 75 Jun 6 13:34 README.txt
-rw-rw-rw-@ 1 mycomputer staff 1017 May 4 2007 README_en_US.txt
drwx------@ 2 mycomputer staff 68 Jun 6 13:38 en_US
-rw-rw-rw-@ 1 mycomputer staff 3045 May 4 2007 en_US.aff
-rw-rw-rw-@ 1 mycomputer staff 696131 May 4 2007 en_US.dic
Однако, когда я пытаюсь использовать Enchant, я получаю следующую ошибку.
>>> import enchant
>>> d = enchant.Dict('en_US')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/enchant/__init__.py", line 502, in __init__
self._switch_this(broker._request_dict_data(tag),broker)
File "/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/enchant/__init__.py", line 264, in _request_dict_data
self._raise_error(eStr % (tag,),DictNotFoundError)
File "/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/enchant/__init__.py", line 218, in _raise_error
raise eclass(default)
enchant.errors.DictNotFoundError: Dictionary for language 'en_US' could not be found
Я предполагаю, что у меня нет словарных файлов, установленных в правильной папке, но я не знаю, где еще их установить.
Благодарю.
3 ответа
Enchant является "ленивым" и нуждается в поддержке от Aspell.
Итак, что вам нужно сделать, это:
brew remove aspell
brew install aspell --lang=en
После этого будут устанавливаться en dicts, поэтому нет необходимости загружать дополнительные dicts.
Я также смог решить, явно установив параметр для пути к словарю. Не установлен brew - я использую порты Mac. Пришлось вручную скачать oxt файл из открытого офиса apache и извлечь из него файлы (после переименования .oxt
в .zip
, Где хранятся эти значения пути по умолчанию?
Python 2.7.1 (r271:86832, Jul 31 2011, 19:30:53)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import enchant
>>> d = enchant.Dict("en_US")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/pyenchant-1.6.5-py2.7.egg/enchant/__init__.py", line 502, in __init__
self._switch_this(broker._request_dict_data(tag),broker)
File "/Library/Python/2.7/site-packages/pyenchant-1.6.5-py2.7.egg/enchant/__init__.py", line 264,
in _request_dict_data
self._raise_error(eStr % (tag,),DictNotFoundError)
File "/Library/Python/2.7/site-packages/pyenchant-1.6.5-py2.7.egg/enchant/__init__.py", line 218, in _raise_error
raise eclass(default)
enchant.errors.DictNotFoundError: Dictionary for language 'en_US' could not be found
Теперь я применяю исправление, используя особенности моей файловой системы:
>>> enchant.set_param("enchant.myspell.dictionary.path","/Library/Python/2.7/site-packages/pyenchant-1.6.5-py2.7.egg/enchant/share/enchant/myspell")
>>> d=enchant.Dict("en_US")
>>> d.check("enchant")
True
>>>
Видеть значит верить - опять же - где хранится версия этого пути по умолчанию (я новичок в Python и Eggs - из Java и Jars)
Я смог решить это с помощью команды:
enchant.set_param ("enchant.myspell.dictionary.path", "/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/enchant/share/enchant/myspell")
Другие люди, которые установили Enchant с помощью портов, не имели этой проблемы.