2016-07-24 111 views
3

使用Windows。在Windows上尝试执行Django时出现“OSError:dlopen()无法在Windows上加载库:cairo/cairo-2”

我使用Weasyprint,似乎与那一个,根据完整的跟踪:

Unhandled exception in thread started by <function wrapper at 0x03F605B0> 
Traceback (most recent call last): 
    File "C:\my-venv\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper 
    fn(*args, **kwargs) 
    File "C:\my-venv\lib\site-packages\django\core\management\commands\runserver.py", line 109, in inner_run 
    autoreload.raise_last_exception() 
    File "C:\my-venv\lib\site-packages\django\utils\autoreload.py", line 249, in raise_last_exception 
    six.reraise(*_exception) 
    File "C:\my-venv\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper 
    fn(*args, **kwargs) 
    File "C:\my-venv\lib\site-packages\django\__init__.py", line 18, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "C:\my-venv\lib\site-packages\django\apps\registry.py", line 115, in populate 
    app_config.ready() 
    File "C:\my-venv\lib\site-packages\debug_toolbar\apps.py", line 15, in ready 
    dt_settings.patch_all() 
    File "C:\my-venv\lib\site-packages\debug_toolbar\settings.py", line 243, in patch_all 
    patch_root_urlconf() 
    File "C:\my-venv\lib\site-packages\debug_toolbar\settings.py", line 231, in patch_root_urlconf 
    reverse('djdt:render_panel') 
    File "C:\my-venv\lib\site-packages\django\core\urlresolvers.py", line 568, in reverse 
    app_list = resolver.app_dict[ns] 
    File "C:\my-venv\lib\site-packages\django\core\urlresolvers.py", line 360, in app_dict 
    self._populate() 
    File "C:\my-venv\lib\site-packages\django\core\urlresolvers.py", line 293, in _populate 
    for pattern in reversed(self.url_patterns): 
    File "C:\my-venv\lib\site-packages\django\utils\functional.py", line 33, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "C:\my-venv\lib\site-packages\django\core\urlresolvers.py", line 417, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "C:\my-venv\lib\site-packages\django\utils\functional.py", line 33, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "C:\my-venv\lib\site-packages\django\core\urlresolvers.py", line 410, in urlconf_module 
    return import_module(self.urlconf_name) 
    File "C:\Python27\Lib\importlib\__init__.py", line 37, in import_module 
    __import__(name) 
    File "C:\my-project\project\urls.py", line 9, in <module> 
    from utils.views import site_info, nav_autocomplete 
    File "C:\my-project\utils\views.py", line 24, in <module> 
    import weasyprint 
    File "C:\my-venv\lib\site-packages\weasyprint\__init__.py", line 338, in <module> 
    from .css import PARSER, preprocess_stylesheet # noqa 
    File "C:\my-venv\lib\site-packages\weasyprint\css\__init__.py", line 30, in <module> 
    from . import computed_values 
    File "C:\my-venv\lib\site-packages\weasyprint\css\computed_values.py", line 18, in <module> 
    from .. import text 
    File "C:\my-venv\lib\site-packages\weasyprint\text.py", line 18, in <module> 
    import cairocffi as cairo 
    File "C:\my-venv\lib\site-packages\cairocffi\__init__.py", line 46, in <module> 
    cairo = dlopen(ffi, 'cairo', 'cairo-2') 
    File "C:\my-venv\lib\site-packages\cairocffi\__init__.py", line 43, in dlopen 
    raise OSError("dlopen() failed to load a library: %s" % '/'.join(names)) 
OSError: dlopen() failed to load a library: cairo/cairo-2 

回答

1

为GTK +包的列表,安装见http://win32builder.gnome.org/http://gtk-win.sourceforge.net/home/。这些包括所需的cairo/cairo-2库。

  • bin\文件夹的内容提取到例如C:\Program Files (x86)\GTK2-bundle\(任意目录会做)
  • 添加上述目录到PATH环境变量
  • 重新启动开发环境(在我的情况PyCharm)
+0

在排除故障时,在Windows上,你真的需要小心避免环境变量中的路径冲突。我更新了Visual Studio并安装了另一个软件套件,其中一个更新改变了我的一些路径,导致出现此错误。 – bmjjr

相关问题