2016-05-25 13 views
6

Đây là quan điểm của tôi:dlopen() không thể tải thư viện: cairo/cairo-2

from django.conf import settings 
from django.http import HttpResponse 
from django.template.loader import render_to_string 
import weasyprint 



    @staff_member_required 
    def admin_order_pdf(request, order_id): 
     order = get_object_or_404(Order, id=order_id) 
     html = render_to_string('orders/order/pdf.html', {'order': order}) 
     response = HttpResponse(content_type='application/pdf') 
     response['Content-Disposition'] = 'filename="order_{}.pdf"'.format(order.id) 
     weasyprint.HTML(string=html).write_pdf(response, 
               stylesheets=[weasyprint.CSS(settings.STATIC_ROOT + 'css/pdf.css')]) 
     return response 

khi tôi muốn nhập khẩu (weasyprint nhập khẩu) nó mang lại cho tôi một lỗi.

ERROR: 

Request Method: GET 
Request URL: http://127.0.0.1:8000/admin/orders/order/ 
Django Version: 1.8.6 
Exception Type: OSError 
Exception Value:  
dlopen() failed to load a library: cairo/cairo-2 

Tôi đã cài đặt sổ xiên và cairocffi. Tôi đang sử dụng osx EI CAPITAN.

Trả lời

4

Tôi cũng có cùng một vấn đề về cài đặt mới của weasyprint trên OSX El Capitan. Đây là cách tôi giải quyết nó.

Thứ nhất, cairo không được tìm thấy bởi khi cài đặt qua pip, vì vậy tôi cố gắng cài đặt nó qua homebrew bằng cách sử dụng lệnh sau

brew install cairo pango gdk-pixbuf libxml2 libxslt libffi 

Một khi điều này được thực hiện, tôi đã cố gắng để tìm ra con đường của cài đặt cairo. Đối với trường hợp của tôi, vị trí là /usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/ tôi chỉ xuất khẩu này để đường dẫn thư viện DYLD tôi

export DYLD_LIBRARY_PATH=/usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/ 

Sau đó, tôi gỡ bỏ cài đặt và cài đặt lại weasyprint

pip uninstall weasyprint 
pip install weasyprint 

bài viết đó, tôi đã cố gắng để chạy weasyprint, nhưng có một lỗi mới

Traceback (most recent call last): 
File "/Users/anurag/VirtualEnvs/test/bin/weasyprint", line 11, in <module> 
load_entry_point('WeasyPrint==0.31', 'console_scripts', 'weasyprint')() 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 565, in load_entry_point 
return get_distribution(dist).load_entry_point(group, name) 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2598, in load_entry_point 
return ep.load() 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2258, in load 
return self.resolve() 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2264, in resolve 
module = __import__(self.module_name, fromlist=['__name__'], level=0) 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/__init__.py", line 338, in <module> 
from .css import PARSER, preprocess_stylesheet # noqa 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/css/__init__.py", line 30, in <module> 
from . import computed_values 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/css/computed_values.py", line 18, in <module> 
from .. import text 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/text.py", line 216, in <module> 
'libgobject-2.0.dylib') 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/text.py", line 212, in dlopen 
return ffi.dlopen(names[0]) # pragma: no cover 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/cffi/api.py", line 139, in dlopen 
lib, function_cache = _make_ffi_library(self, name, flags) 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/cffi/api.py", line 770, in _make_ffi_library 
backendlib = _load_backend_lib(backend, libname, flags) 
File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/cffi/api.py", line 759, in _load_backend_lib 
return backend.load_library(name, flags) 
OSError: cannot load library gobject-2.0: dlopen(gobject-2.0, 2): image not found 

tôi đã cố gắng để tìm ra vị trí của thư viện đối tượng. Tìm thấy nó trong/opt/local/lib và thiết lập dự phòng thư viện đường

export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib 

Sau đó, tôi đã cố gắng chạy weasyprint một lần nữa và nó làm việc

(test)anurag-mac:~ anurag$ weasyprint --version 
WeasyPrint version 0.31 

Tôi hy vọng người khác cũng thấy nó hữu ích.

CẬP NHẬT-1

Mặc dù phương pháp trên hiệu quả, mysql python bắt đầu đưa ra lỗi vì điều này và thủ phạm đã được xác định đường dẫn thư viện dự phòng. Vì vậy, tôi loại bỏ dòng này

export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib 

đó đã cho tôi những lỗi gobject một lần nữa, sau đó tôi đã cố gắng tìm kiếm các vị trí lắp đặt và nối vào DYLD_LIBRARY_PATH

export DYLD_LIBRARY_PATH=/usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/:/usr/local/homebrew/Cellar/glib/2.48.2/lib/ 

Sau khi làm điều đó, tôi đã nhận lỗi tương tự cho pango.Sau khi sửa chữa tất cả các lỗi, đây là đường dẫn thư viện chính thức mà làm việc

export DYLD_LIBRARY_PATH=/usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/:/usr/local/homebrew/Cellar/glib/2.48.2/lib/:/usr/local/homebrew/Cellar/pango/1.40.3/lib/ 
+0

Rất hữu ích, cảm ơn rất nhiều! – antoinet

7

này đã được giải quyết cho tôi bằng cách cài đặt phụ thuộc sau đây trên Ubuntu:

sudo apt-get install libpango1.0-0 
sudo apt-get install libcairo2 
sudo apt-get install libpq-dev 

Kiểm tra sự phụ thuộc tại liên kết:

http://weasyprint.readthedocs.io/en/latest/install.html

Các vấn đề liên quan