Pythonプログラミング:virtualenvにpolyglotをインストール

polyglotを仮想環境にインストールするのはかなりの手間がかかる。polyglot moduleのインストはpip install polyglotで簡単に出来るが、モジュールをインポートすると

1
from polyglot.text import Text

icu moduleがないエラーが出た。このエラーは、sudo apt-get install libicu-devでは解消されない。pyicuというmoduleをインストール必要があり、pip install pyicuでインストールを試みるも、無情にもicu-configがないとエラーが出る。とりあえずpyicuをインストールする前に最新のicuをインストールしてみることにした。

最新版のicuをソースからインストールする。

1
2
3
4
5
6
wget http://download.icu-project.org/files/icu4c/61.1/icu4c-61_1-src.tgz
tar -xvzf icu4c-61_1-src.tgz
cd icu/source
./configure --prefix=/usr CXX=clang++ CC=clang
make
make install

次にpyicuをvirtualenvにインストールする。

1
2
3
4
git clone https://github.com/ovalhub/pyicu.git
cd pyicu
CFLAGS=-I/usr/include LDFLAGS=-L/usr/lib/icu/ ~/.pyenv/versions/3.6.4/envs/py36/bin/python setup.py build
CFLAGS=-I/usr/include LDFLAGS=-L/usr/lib/icu/ ~/.pyenv/versions/3.6.4/envs/py36/bin/python setup.py install

これだけやってもまだ以下のようなエラーが吐き出される。

undefined symbol: _ZTIN6icu_5714LEFontInstanceE

このエラーを以下のようにやるしか解消できないようだ。

sudo apt install libicu55 python3-icu icu-devtools
rm -rf ~/.pyenv/versions/3.6.4/envs/py36/lib/python3.6/site-packages/PyICU-2.0.3-py3.6-linux-x86_64.egg/_icu.cpython-36m-x86_64-linux-gnu.so
ln -s /usr/lib/python3/dist-packages/_icu.cpython-35m-x86_64-linux-gnu.so ~/.pyenv/versions/3.6.4/envs/py36/lib/python3.6/site-packages/PyICU-2.0.3-py3.6-linux-x86_64.egg/_icu.cpython-36m-x86_64-linux-gnu.so

これだけやってもまだ以下のようなエラーが吐き出された。

ModuleNotFoundError: No module named 'morfessor'

このエラーは、pip install morfessorで簡単に解消された。
やっとpolyglotのインストールが完了した。一筋縄ではいかないのが辛いところだ。

1
2
3
4
5
from polyglot.text import Text
blob = """We will meet at eight o'clock on Thursday morning."""
text = Text(blob)
for x in text.transliterate("ja"):
    print(x)
ウェ
ウィル
メート
アト
ーイト
オクロック
オン
トハースダイ
モーニング
参考サイトhttps://stackoverflow.com/
参考サイトhttps://github.com/

スポンサーリンク