Проблемы с "пиенчантом", CentOS (и El Capitan)

Постановка задачи

У меня проблемы с запуском файла python, который импортирует библиотеку enchant. Я установил модуль enchant с помощью следующей команды:

$ pip install -U pyenchant
> Requirement already up-to-date: pyenchant in /usr/lib/python3.4/site-packages


Моя среда Python

$ cat /etc/*-release
CentOS Linux release 7.2.1511 (Core)

$ cat ~/.zshrc
...
export PYTHONPATH=/usr/lib/python3.4/site-packages
alias py="python3"
alias pip="pip3"
...

$ py --version
Python 3.4.3

$ pip --version
pip 8.1.1 from /usr/lib/python3.4/site-packages (python 3.4)

$ echo $PYTHONPATH
/usr/lib/python3.4/site-packages

$ ls -al /usr/lib/python3.4/site-packages | grep enchant
drwxr-xr-x  5 root root 4096 13 apr 13:56 enchant
drwxr-xr-x  2 root root 4096 13 apr 13:56 pyenchant-1.6.6.dist-info

$ yum list installed | grep python-enchant
((nothing))


Мой Python файл

$ cat ~/diskchall.py
import enchant

dictionary = enchant.Dict("en_US")
...


Запуск файла

$ py ~/diskchall.py
Traceback (most recent call last):
  File "/root/diskchall.py", line 1, in <module>
    import enchant
  File "/usr/lib/python3.4/site-packages/enchant/__init__.py", line 92, in <module>
    from enchant import _enchant as _e
  File "/usr/lib/python3.4/site-packages/enchant/_enchant.py", line 143, in <module>
    raise ImportError(msg)
ImportError: The 'enchant' C library was not found. Please install it via your OS package manager, or use a pre-built binary wheel from PyPI.


OS X El Capitan - ошибка типа

Проделал те же самые шаги на El Capitan, но при запуске он дал мне TypeError.

Исправлено путем изменения _enchant.py файл, как предлагается в этой проблеме.

Весьма обидно, что этот коммит был с 2014 года и до сих пор не сделал репо Пипа.

1 ответ

Решение

Похоже, что вам не хватает хотя бы одной зависимости - "зачаровать" библиотеку C. Это называется libenchant или enchant. Модуль python является оболочкой для этой библиотеки, поэтому вам нужна эта библиотека, чтобы использовать оболочку. Чтобы увидеть, что доступно, попробуйте:

yum whatprovides '*enchant*'

Ваша команда

yum list installed | grep python-enchant

не будет отображать Python-Enchant, поскольку вы установили его с pip not yum. Вместо этого попробуйте:

pip freeze | grep enchant

Список зависимостей для одной сборки python-enchant можно увидеть здесь, обратите внимание на требование enchant >= 1.5.0 (иногда называемое libenchant)

На RedHat простой "yum whatprovides enchant" будет делать:

yum whatprovides enchant
...
Repo        : rhel6-base-x86_64
...
1:enchant-1.5.0-4.el6.i686 : An Enchanting Spell Checking Library
Repo        : rhel6-base-x86_64
...
1:enchant-1.5.0-5.el6.i686 : An Enchanting Spell Checking Library
Repo        : rhel6-base-x86_64
...
1:enchant-1.5.0-5.el6.x86_64 : An Enchanting Spell Checking Library
Repo        : rhel6-base-x86_64
...

Установите его с помощью:

yum install enchant

В случае, если у вас есть Python 2.7 и Centos 7 (любая вспомогательная версия), это шаги для установки и запуска Enchant Library. 1. Установите выпуск epel для centos7, следуя другим зависимостям для enchant.

RUN rpm -Uvh ./rpms/epel-release-7-11.noarch.rpm
RUN rpm -Uvh ./rpms/hunspell-1.2.8-16.el6.x86_64.rpm
RUN rpm -Uvh ./rpms/hunspell-en-US-0.20121024-6.el7.noarch.rpm
RUN rpm -Uvh ./rpms/hunspell-1.3.2-15.el7.x86_64.rpm
RUN rpm -Uvh ./rpms/enchant-1.6.0-8.el7.x86_64.rpm
RUN rpm -Uvh ./rpms/aspell-0.60.6.1-9.el7.x86_64.rpm
RUN rpm -Uvh ./rpms/enchant-aspell-1.6.0-8.el7.x86_64.rpm
RUN rpm -Uvh ./rpms/python-enchant-1.6.5-14.el7.noarch.rpm

Это установит библиотеку pyenchant с проверкой орфографии для EN (вы можете изменить ее соответственно на любой другой язык) и интерфейс aspell для PY и hunspeller.

Другие вопросы по тегам