当我在 Python3 和 Mac OS 上启动 Flask 应用程序时,遇到此错误:
OSError:无法加载库“gobject-2.0-0”:dlopen(gobject-2.0-0, 2):找不到图像。此外,ctypes.util.find_library() 无法找到名为“gobject-2.0-0”的库
我weasyprint
在我的项目中使用它导致了这个问题。
我尝试安装glib
,它已安装在我的系统中。
我按照安装 weasyprint (Django 项目)的说明安装了包weasyprint。\n我的系统:win 10。我已经安装了gtk3,它存在于我的PATH中\n
import weasyprint\n...\n@staff_member_required\ndef order_admin_pdf(request, order_id):\n # \xd0\x9f\xd0\xbe\xd0\xbb\xd1\x83\xd1\x87\xd0\xb0\xd0\xb5\xd0\xbc \xd0\xb7\xd0\xb0\xd0\xba\xd0\xb0\xd0\xb7 \xd0\xbf\xd0\xbe ID:\n order = get_object_or_404(Order, id=order_id)\n # \xd0\x9f\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb0\xd0\xb5\xd0\xbc \xd0\xbe\xd0\xb1\xd1\x8a\xd0\xb5\xd0\xba\xd1\x82 \xd0\xb2 \xd1\x84\xd1\x83\xd0\xbd\xd0\xba\xd1\x86\xd0\xb8\xd1\x8e render_to \xd1\x87\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb7 \xd0\xb3\xd0\xb5\xd0\xbd\xd0\xb5\xd1\x80\xd0\xb0\xd1\x86\xd0\xb8\xd1\x8e \xd1\x88\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xbe\xd0\xbd\xd0\xb0 pdf.html HTML \xd0\xb2 \xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb5 \xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb8:\n html = render_to_string(\'shop/orders/order_admin_pdf.html\',\n {\'order\': order})\n # \xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xb5\xd0\xbc \xd0\xbe\xd0\xb1\xd1\x8a\xd0\xb5\xd0\xba\xd1\x82 \xd0\xbe\xd0\xb2\xd1\x82\xd0\xb5\xd1\x82\xd0\xb0 \xd1\x81 \xd1\x82\xd0\xb8\xd0\xbf\xd0\xbe\xd0\xbc \xd1\x81\xd0\xbe\xd0\xb4\xd0\xb5\xd1\x80\xd0\xb6\xd0\xb8\xd0\xbc\xd0\xbe\xd0\xb3\xd0\xbe application/pdf \xd0\xb8 \xd0\xb7\xd0\xb0\xd0\xb3\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xba\xd0\xbe\xd0\xbc Content-Disposition:\n response = HttpResponse(content_type=\'application/pdf\')\n response[\'Content-Disposition\'] = \'filename=order_{}.pdf"\'.format(order.id)\n # \xd0\x92\xd1\x8b\xd0\xb7\xd0\xbe\xd0\xb2 \xd0\xbc\xd0\xb5\xd1\x82\xd0\xbe\xd0\xb4\xd0\xb0 weasyprint \xd0\xb4\xd0\xbb\xd1\x8f \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x83\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f PDF \xd0\xb4\xd0\xbe\xd0\xba\xd1\x83\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x82\xd0\xb0:\n weasyprint.HTML(string=html).write_pdf(response,\n stylesheets=[weasyprint.CSS(\n settings.STATIC_ROOT + \'css/pdf.css\')])\n return response\n
Run Code Online (Sandbox Code Playgroud)\n\nOSError:无法加载库“gobject-2.0”:错误0x7e。此外,ctypes.util.find_library() …
我想在Django中使用WeasyPrint生成报告.但我不知道如何集成css(特别是bootstrap css文件).我能够看到生成的html.但是当我将这一行添加到我的模板时,我收到警告 -
<link href="/static/css/bootstrap.min.css" rel="stylesheet"/>
警告是 - 没有基URI的相对URI引用:在行None
我想知道如何将基URI发送到模板.任何帮助,将不胜感激.
我的应用程序依赖于:
它在开发和生产环境中运行完美,但在使用硒进行测试时则无法运行.
使用weasyprint,我从HTML创建一个PDF,这个库使用urllib下载CSS(例如http:// localhost:8081/static/lib/bootstrap/css/bootstrap.min.css),但它挂起(没有错误,只是打开这些时,卡住了.
如果我在挂起时直接在浏览器中输入此URL,则会显示CSS.
使用的命令:
./manage.py test tests.test_account.HomeNewVisitorTest
Run Code Online (Sandbox Code Playgroud)
测试的相关部分:
from selenium import webdriver
class HomeNewVisitorTest(StaticLiveServerTestCase):
def setUp(self):
if TEST_ENV_FIREFOX:
self.driver = webdriver.Firefox()
else:
self.driver = webdriver.PhantomJS()
self.driver.set_window_size(1440, 900)
def tearDown(self):
try:
path = 'worksites/' + self.worksite_name.lower()
os.rmdir(settings.MEDIA_ROOT + path)
except FileNotFoundError:
pass
super().tearDown()
def test(self):
d = self.driver
d.get(self.get_full_url('home'))
d.find_element_by_css_selector('.btn-success[type=submit]').click()
Run Code Online (Sandbox Code Playgroud)
在我看来:
# Generate PDF for contact directory
template = get_template("pdf/annuaire.html")
context = {"worksite": worksite}
html = template.render(RequestContext(self.request, context))
base_url = self.request.build_absolute_uri("/") …
Run Code Online (Sandbox Code Playgroud) 我正在使用 UBUNTU 18.04 在 AWS 上设置 EC2 实例,并在尝试运行此 Gunicorn 命令时遇到以下错误gunicorn --bind 0.0.0.0:8000 zipherJobCards.wsgi:application
错误:
OSError: cannot load library 'pango-1.0-0': pango-1.0-0: cannot open shared object file: No such file or directory.
Additionally, ctypes.util.find_library() did not manage to locate a library called 'pango-1.0-0'
Run Code Online (Sandbox Code Playgroud)
在我的基本目录和 Web 应用程序目录中安装 weasyprint 后,我遇到了此错误。
有谁知道这个问题的原因以及如何解决它?
正如在文档页面中所说,我在我的html文件中定义了一个img标记,如下所示:
<img src='{% static 'image.png' %}'/>
Run Code Online (Sandbox Code Playgroud)
这个url存在于服务器中,我甚至使用http响应创建了一个不同的视图,图像显示得很好.以下是两个视图的代码:
pdf-weasyprint视图:
def card_view(request):
template = loader.get_template('card.html')
context = {'sample': None
}
html = template.render(RequestContext(request, context))
response = HttpResponse(mimetype='application/pdf')
HTML(string=html).write_pdf(response)
return response
Run Code Online (Sandbox Code Playgroud)
html视图:
def card_view2(request):
context = {'sample': None,
}
return render_to_response('card.html', context,
context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
我认为默认的url fetcher应该找到并渲染图像(这是一个png - 所以不应该涉及任何格式问题)任何想法?任何帮助,将不胜感激!!
我刚刚安装了一个Ubuntu仿生实例。它预装了cairo 1.14.6。我至少需要cairo 1.15.4才能使weasyprint正常工作。不幸的是,即使在安装了最新的cairo之后,python仍然会选择旧的库。任何线索,我将不胜感激。
# Install weasyprint dependencies
sudo apt-get install build-essential python3-dev python3-pip python3-setuptools python3-wheel python3-cffi libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-info
# Check cairo lib version, prints "1.15.10-2ubuntu0.1"
dpkg -l '*cairo*'
# Install weasyprint
pip3 install weasyprint
# Test cairo version catch by python, still prints "1.14.6"
python3 -c "import cairocffi; print(cairocffi.cairo_version_string())"
Run Code Online (Sandbox Code Playgroud) weasyprint了解某些自定义css指令,例如:
@bottom-right {
content: "Page " counter(page) " of " counter(pages) "
}
Run Code Online (Sandbox Code Playgroud)
在weasyprint生成的每个pdf页面的右下角放置一个"Page 1 of 4"样式计数器.
我想为我的页脚生成稍微更漂亮的格式 - 例如,我希望能够以粗体显示某些部分,而其他部分则以斜体显示,如下所示:
第1 页,共 4页
这对weasyprint来说是否可行?如果是这样,我如何指示weasyprint使用这种格式 - 我将采用基于CSS的解决方案,但我更倾向于使用python中的weasyprint库以编程方式执行此操作.
我需要帮助在 pdf 中附加 img 文件。我们使用 WeasyPrint lib 从 html 生成 pdf。
在html中像这样连接img文件
<img src="1.png" alt="">
<img src="2.png" alt="">
<img src="3.png" alt="">
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我没有看到图像。
我正在pip freeze
一个 python 项目上运行,它显示除数字版本之外的字符串 VERSION 并且包安装失败,警告消息是:
weasyprint 43 有要求 cairocffi>=0.9.0,但您将拥有不兼容的 cairocffi file-.cairocffi-VERSION。
cairocffi===file-.cairocffi-VERSION
Run Code Online (Sandbox Code Playgroud)
cairoccffi 是我在项目中使用的 Weasyprint 的依赖项,并且 weasypring 版本是正确的:
WeasyPrint==43
Run Code Online (Sandbox Code Playgroud)
我尝试使用pipreqs
生成 requirements.txt,它没有显示 cairocffi 包,但包安装失败并出现相同的错误。
我检查了 site-packages 文件夹,它包含
cairocffi-file_.cairocffi_VERSION.dist-info/
Run Code Online (Sandbox Code Playgroud)
导致问题的原因。
有人可以帮忙吗?
weasyprint ×10
django ×6
python ×6
pdf ×3
python-3.x ×3
amazon-ec2 ×1
cairo ×1
css ×1
flask ×1
formatting ×1
glib ×1
html ×1
lib ×1
selenium ×1
ubuntu ×1
ubuntu-18.04 ×1
urlopen ×1
windows ×1