web-dev-qa-db-ja.com

Python:OSError:ライブラリlibcairo.so.2を読み込めません

Windows7プラットフォームでpythonスクリプトを実行するのに問題があります。Pythonとcairoをインストールしました。最後に、「pip」を使用します。このコマンドを使用してスクリプトを実行しています:

C:\Python34>python.exe label/make_label.py

次のエラーメッセージが表示されます。

Traceback (most recent call last):
  File "label/make_label.py", line 6, in <module>
    import cairocffi as cairo
  File "C:\Python34\lib\site-packages\cairocffi\__init__.py", line 41, in <modul
e>
    cairo = dlopen(ffi, *CAIRO_NAMES)
  File "C:\Python34\lib\site-packages\cairocffi\__init__.py", line 34, in dlopen

    return ffi.dlopen(names[0])  # pragma: no cover
  File "C:\Python34\lib\site-packages\cffi\api.py", line 118, in dlopen
    lib, function_cache = _make_ffi_library(self, name, flags)
  File "C:\Python34\lib\site-packages\cffi\api.py", line 411, in _make_ffi_libra
ry
    backendlib = _load_backend_lib(backend, libname, flags)
  File "C:\Python34\lib\site-packages\cffi\api.py", line 400, in _load_backend_l
ib
    return backend.load_library(name, flags)
OSError: cannot load library libcairo.so.2: error 0x7e

私がすでに行ったことは次のとおりです。

  • 環境変数のGTK/binにPATHを追加しました
  • GTK/binフォルダーを確認し、「libcairo-2.dll」を見つけたので、名前をlibcairo.soに変更しました。

これを解決するのに他にどのような情報が役立つかわかりませんが、お知らせください。追加してみます。

11
Niddro

Cairoは、標準の検索ライブラリにない共有ライブラリに依存しているようですが、pythonはdlopenを呼び出してライブラリを動的にロードしているため、libcairo.so.2(リンクの場合は、参照が作業ディレクトリの同じフォルダにあることを確認してください)。pkg-configを試して環境を設定することもできます。ここを参照してください http://people.freedesktop.org/~ dbn/pkg-config-guide.html

2
Cui Heng

自作を使用するMacOS Xの場合:

brew install cairo
brew install pango
9
Hexatonic

私はちょうど同じ問題を抱えていました( "OSError:ライブラリlibcairo.so.2をロードできません:エラー0x7e")、これは私がWindows(Windows 7 x64 、Python 3.4.2 x86(MSC v.1600 32ビット)):

  • サードパーティの依存関係(libcairo-2.dllを含む)を含むGTK +スタックの オールインワンバンドル をダウンロードしましたおよびその他のカイロ関連ライブラリ)
  • extractedこのアーカイブをスペースを含まないパスに (例:C:\Programs\gtk+
  • added抽出されたディレクトリのbinサブディレクトリ(言及されたlibcairo-2.dllおよびその他の必要なファイル)からPATH
    • Win+RSystemPropertiesAdvanced
    • 環境変数...
    • このディレクトリをPath変数に追加しました(セミコロンの後、ユーザー変数またはシステム変数のいずれかに) (例:...;C:\foo;C:\Programs\gtk+
    • OK
  • pip install cairosvg
  • すでに機能していた非常に単純なコードでテストしました。
import cairosvg
testsvg = '<svg height="30" width="30">\
    <text y="10">123</text>\
    </svg>'
svgConvertedToPng = cairosvg.svg2png(bytestring=testsvg)
print(svgConvertedToPng)
1
Sk8erPeter