7

Windows 7、64 ビットで Python 3.3 (Anaconda ディストリビューション) を実行しています。私は Weasyprint app/library をインストールしようとしましたが、これには CFFI を含む多くの依存関係があり、互換性のあるバージョンがバイナリ配布で利用できなかったため、ソースからコンパイルする必要がありました。

weasyprint を実行すると、インポート ロード プロセス中、特に Cairo 用の GTK+ ライブラリ dll をロードするために CFFI を呼び出すときにチョークします。私が得るエラーは次のとおりです。

$ weasyprint
Traceback (most recent call last):
  File "c:\anaconda\envs\py33\lib\site-packages\cffi-0.8-py3.3-win-amd64.egg\cffi\api.py", line 399, in _make_ffi_library
    backendlib = backend.load_library(name, flags)
OSError: cannot load library libcairo-2.dll: error 0x7e

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Anaconda\envs\py33\Scripts\weasyprint-script.py", line 9, in <module>
    load_entry_point('WeasyPrint==0.20', 'console_scripts', 'weasyprint')()
  File "C:\Anaconda\envs\py33\lib\site-packages\pkg_resources.py", line 343, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "C:\Anaconda\envs\py33\lib\site-packages\pkg_resources.py", line 2355, in load_entry_point
    return ep.load()
  File "C:\Anaconda\envs\py33\lib\site-packages\pkg_resources.py", line 2061, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "c:\anaconda\envs\py33\lib\site-packages\weasyprint-0.20-py3.3.egg\weasyprint\__init__.py", line 309, in <module>
    from .css import PARSER, preprocess_stylesheet
  File "c:\anaconda\envs\py33\lib\site-packages\weasyprint-0.20-py3.3.egg\weasyprint\css\__init__.py", line 30, in <module>
    from . import computed_values
  File "c:\anaconda\envs\py33\lib\site-packages\weasyprint-0.20-py3.3.egg\weasyprint\css\computed_values.py", line 18, in <module>
    from .. import text
  File "c:\anaconda\envs\py33\lib\site-packages\weasyprint-0.20-py3.3.egg\weasyprint\text.py", line 18, in <module>
    import cairocffi as cairo
  File "c:\anaconda\envs\py33\lib\site-packages\cairocffi-0.5.1-py3.3.egg\cairocffi\__init__.py", line 39, in <module>
    cairo = dlopen(ffi, 'libcairo-2.dll', 'cairo', 'libcairo-2')
  File "c:\anaconda\envs\py33\lib\site-packages\cairocffi-0.5.1-py3.3.egg\cairocffi\__init__.py", line 34, in dlopen
    return ffi.dlopen(names[0])  # pragma: no cover
  File "c:\anaconda\envs\py33\lib\site-packages\cffi-0.8-py3.3-win-amd64.egg\cffi\api.py", line 117, in dlopen
    lib, function_cache = _make_ffi_library(self, name, flags)
  File "c:\anaconda\envs\py33\lib\site-packages\cffi-0.8-py3.3-win-amd64.egg\cffi\api.py", line 405, in _make_ffi_library
    backendlib = backend.load_library(path, flags)
OSError: cannot load library C:\Windows\system32\libcairo-2.dll: error 0x7e 

私が持っている環境は次のとおりです。Windows 7.1 64ビット、Python 3.3 64ビット、64ビット環境のVisual Studio 2010で(私が)コンパイルしたCFFI、およびカイロのlibcairo-2.dllも64ビットバージョンです.

私は Windows プログラマーではなく、Weasyprint を別の (Python 言語) プロジェクトで動作させたいため、この混乱を掘り下げているだけです。私はずっと前に Delphi で Windows プログラミングを少し行ったことがあります。そのため、これがどのように機能するかについては漠然としていますが、この問題を解決することはできませんでした。

4

2 に答える 2

2

同様のエラー (競合する DLL) が発生していましたが、GTK へのパス (例: "C:\gtk\bin") を環境変数の先頭に移動するだけで最終的に解決されました。

于 2014-07-17T02:00:18.130 に答える