Windows 7, 64 비트에서 Python 3.3 (Anaconda distribution)을 실행합니다. 필자는 바이너리 배포판에서 호환 가능한 버전이 없기 때문에 소스에서 컴파일해야했던 CFFI를 포함하여 많은 의존성이있는 Weasyprint app/library를 설치하려고 시도했습니다.dll을로드 할 때 Python CFFI 모듈이 실패합니다. OSError 0x7e
weasyprint를 실행하면 가져 오기로드 프로세스 중 (특히 카이로 용 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
다음과 같이 내가 가진 환경입니다 : 윈도우 7.1 64 비트, 파이썬 3.3 64 비트, CFFI 64 비트와 비주얼 스튜디오 2010에서 (내게로) 컴파일 환경, Cairo의 libcairo-2.dll도 64 비트 버전입니다.
저는 Weasyprint가 다른 (Python 언어) 프로젝트에서 작동하도록하고 싶기 때문에 Windows 프로그래머가 아니며이 혼란에 빠져 있습니다. 필자는 오랫동안 델파이에서 약간의 윈도우 프로그래밍을 해왔으므로 이러한 것들이 어떻게 작동하는지 모호하게 이해하고 있지만이 문제를 해결할 수 없었습니다.
마지막으로 문제를 해결 했습니까? 나는 똑같은 오류에 직면 해 있으며 그것을 고치기 시작 해야할지 전혀 모른다. 모든 제안을 부탁드립니다. 고맙습니다! – neurix
문제는 DLL이 해당 툴체인에서 컴파일 된 Python과 호환되어야하기 때문에 Visual Studio로 CFFI를 컴파일해야한다는 것입니다. C + +와 함께 제공되는 VS 2010 Express를 사용했지만 CFFI는 VS 2007에서 컴파일되도록 고안되었습니다. 올바르게 기억한다면 Microsoft는 make system을 변경하여 더 이상 vsbuild를 사용할 수 없게되었습니다.). 분명히 MS 세계는 * nix 세계와 같지 않습니다. 2014 년의 툴체인이 1986 년부터 코드를 컴파일합니다. 그래서 저는 ... SOL이었습니다 ... 나는 맥 상자에서 weasyprint를 실행하여 문제를 해결합니다. –