こちらの記事に書いたように、
1 |
pip install cairosvg |
は成功したのですが、
1 |
import cairosvg |
でエラーが発生したので、対処法を記載します。
OSは Windows Server 2012 R2 です。
現象
発生手順
pythonで下記のようにcairosvg を import する。
1 |
import cairosvg |
エラー内容
1 2 3 4 5 6 7 8 |
File "C:\Users\vagrant\AppData\Local\Programs\Python\Python36\lib\site-packages\cairosvg\__init__.py", line 29, in <module> from . import surface File "C:\Users\vagrant\AppData\Local\Programs\Python\Python36\lib\site-packages\cairosvg\surface.py", line 24, in <module> import cairocffi as cairo File "C:\Users\vagrant\AppData\Local\Programs\Python\Python36\lib\site-packages\cairocffi\__init__.py", line 41, in <module> cairo = dlopen(ffi, 'cairo', 'cairo-2') File "C:\Users\vagrant\AppData\Local\Programs\Python\Python36\lib\site-packages\cairocffi\__init__.py", line 38, in dlopen raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names)) |
原因
cairo がインストールされていないことが原因らしく、cairo のインストールには GTK+ (The GIMP Toolkit) が必要らしいです。
dlopen() failed to load a library: cairo / cairo-2 #84
対処法
MSYS2 のインストール
- MSYS2 installer から msys2-x86_64-20161025.exe をダウンロードします。
- msys2-x86_64-20161025.exe を実行し、インストールします。
- インストールが完了すると、MSYS2が起動します。下記コマンドを実行し、package database と core system packages をアップデートします。
1pacman -Syu
Proxy 環境下の場合は、Linux と同じように Proxy 設定してからアップデートします。msys2 + pacmanをproxy環境で使う を参考に Proxy 設定します。。下記のようなエラーが発生した時は、[Alt + F4]キーを押すなどして、MSYS2 を強制終了してください。
12警告: terminate MSYS2 without returning to shell and check for updates again警告: for example close your terminal window instead of calling exit - アップデートがなくなるまでアップデートします。MSYS2 が終了した場合は、再度 MSYS2 を起動して、下記コマンドを実行します。
1pacman -Su
GTK+ (The GIMP Toolkit) のインストール
次に GTK+ をインストールします。
- GTK+3 と依存ライブラリをインストールします。MSYS2 を起動し、下記コマンドを実行します。
1pacman -S mingw-w64-x86_64-gtk3 - GTK+ core applications をインストールします(推奨)。
下記コマンドを実行します。
1pacman -S mingw-w64-x86_64-glade - Python bindings をインストールします。MSYS2 を起動し、下記コマンドを実行します。
1pacman -S mingw-w64-x86_64-python3-gobject
パスを通す
最後に環境変数に C:\msys64\mingw64\bin のパスを通します。
- システムの環境変数を呼び出します。
- 環境変数をクリックします。
- [ユーザーの環境変数]の[Path]を選択し、[編集]をクリックします。
- 末尾に C:\msys64\mingw64\bin を追加します。区切り文字は「;」です。
すでにPython3へのパスが存在した場合、その後ろにパスを追加しないと、Python を実行したときに、C:\msys64\mingw64\bin 配下にあるPythonが呼び出されるからです。 - [OK]をクリックし、終了します。
以上で完了です。
1 |
import cairosvg |
してみましょう。