Ошибка или символ не найден Ошибка с полиглотом, когда PyICU и icu4c установлены правильно

Я действительно борюсь с polyglot, pyicu а также icu4c - и кажется, что я не единственный...

Я использую Mac OS High Sierra 10.13.6 и python3 с виртуальностью

Вот шаги, которые я предпринял, в значительной степени основанные на этой статье:

  1. Начните с нового virtualenv
  2. Удалите и переустановите icu4c (v.62.1) с помощью homebrew
  3. Проверьте ICU_VERSION "62.1"
  4. Делать ln -s /usr/local/Cellar/icu4c/62.1/bin/icu-config /usr/local/bin/icu-config
  5. Загрузить файл pyicu tar (2.1)
  6. Извлеките pyicu и отредактируйте файл setup.py, как указано в связанной статье
  7. собрать и установить pyicu

Я вижу:

    Adding CXXFLAGS="-std=c++11 -I/usr/local/Cellar/icu4c/62.1/include" from /usr/local/bin/icu-config
    Adding LDFLAGS="-L/usr/local/Cellar/icu4c/62.1/lib -licui18n -licuuc -licudata" from /usr/local/bin/icu-config                    
    Installed/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PyICU-2.1-py3.6-macosx-10.6-intel.egg
    ...
    Processing dependencies for PyICU==2.1
    Finished processing dependencies for PyICU==2.1

как и ожидалось.

  1. pip3 установить полиглот

когда я запускаю свой скрипт, я получаю следующее:

File "/Users/Chris/MindWeb/Server/lib/python3.6/site-packages/polyglot/detect/__init__.py", line 1, in <module>
from .base import Detector, Language
File "/Users/Chris/MindWeb/Server/lib/python3.6/site-packages/polyglot/detect/base.py", line 11, in <module>
from icu import Locale
ModuleNotFoundError: No module named 'icu'

Не удивительно, потому что на самом деле в PATH нет модуля icu.

Если вместо шагов 5-7 я делаю pip3 и устанавливаю pyicu (которая создает папку icu), я получаю:

ImportError: dlopen(/Users/Chris/MindWeb/Server/lib/python3.6/site-packages/_icu.cpython-36m-darwin.so, 2): Symbol not found: __ZNK6icu_6214Transliterator12getTargetSetERNS_10UnicodeSetE
Referenced from: /Users/Chris/MindWeb/Server/lib/python3.6/site-packages/_icu.cpython-36m-darwin.so
Expected in: flat namespace
in /Users/Chris/MindWeb/Server/lib/python3.6/site-packages/_icu.cpython-36m-darwin.so

вывод из otool -L /Users/Chris/MindWeb/Server/lib/python3.6/site-packages/_icu.cpython-36m-darwin.so является:

/Users/Chris/MindWeb/Server/lib/python3.6/site-packages/_icu.cpython-36m-darwin.so:
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 104.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4)

Очень благодарен за любые указатели, которые вы можете предложить.

Спасибо

1 ответ

Этот ответ на Github не предназначался специально для этой ошибки, но предоставляет простые средства для установки полиглота с использованием conda и Python 3.6 (после устранения ошибки icu я столкнулся с другими, так что это было полезно).

https://github.com/aboSamoor/polyglot/issues/80#issuecomment-417863726

Используя conda env, вы делаете следующее:

      conda install -c conda-forge pyicu morfessor icu -y && pip install pycld2 polyglot
Другие вопросы по тегам