Как решить проблемы с версиями Cairo и Pango после установки pip WeasyPrint?

Я хочу запустить некоторый код Python из библиотеки WeasyPrint на сервере под управлением Debian GNU/Linux 8. Код действительно работает, за исключением того, что WeasyPrint выдает предупреждение при каждом запуске кода:

/home/username/venv/lib/python3.7/site-packages/weasyprint/document.py:36: UserWarning: There are known rendering problems and missing features with cairo < 1.15.4.
/home/username/venv/lib/python3.7/site-packages/weasyprint/fonts.py:44: UserWarning: @font-face support needs Pango >= 1.38

Чтобы исследовать это, я сначала посмотрел, какие версии у меня были в моем pip list. При установке WeasyPrint я использовал python -m pip install weasyprint, который установил около 10 зависимостей. Однако единственные вещи, связанные с Каиром, это CairoSVG v2.4.2, cairocffi v1.1.0 и cffi 1.12.3. Ничто в моем pip list не имеет только названия "Каир". Я подумал, что, возможно, мне нужно было посмотреть cairocffi, но использование python -m pip install cairocffi -U не дало найденного обновления. Кроме того, веб-сайт Cairo предлагает использовать sudo apt-get install libcairo2-dev, однако в приглашении возвращается сообщение о том, что "libcairo2-dev уже самая новая версия."

Я особенно запутался, когда на этом этапе моих блуждающих поисков я воспользовался возможностью исследовать проблему с Pango. Я использовал find -type d -name "*pango*" в каталоге виртуальной среды Python, который я использую, и не нашел каталога даже с именем pango. Согласно веб-сайту, Pango интегрирован с Cairo, но поскольку python -m pip install weasyprint устанавливает cairocffi, а мой find не дал результатов, Я не понимаю, где в настоящее время находится функциональность Pango. Я нашел пакеты с исходным кодом для Pango, но не знаю, где Я бы даже выложил эти файлы для замены существующего кода. У меня также нет опыта загрузки/установки пакетов Python из исходного кода, не говоря уже о том, что я даже не могу понять, как работает моя текущая установка.

Какая связь между cairocffi и cairo? Точно так же, каковы отношения Панго с cairocffi по сравнению с cairo? Как мне продолжить работу, чтобы устранить предупреждения о версии, с которыми я сталкиваюсь?

Если это не то место, чтобы опубликовать это, пожалуйста, направьте меня в более подходящее место, и я возьму это там.


person Nelson Frew    schedule 24.09.2019    source источник
comment
Попробуйте установить pycario: pip install pycairo   -  person thisisjaymehta    schedule 27.06.2020


Ответы (1)


CairoGraphics — это интеграция Pango с Cairo (http://cairographics.org/) для обработки текста и рендеринга графики. cairocffi — это версия CairoGraphics для Python. Следовательно, похоже, именно в этом и заключается ошибка.

Конкретно по вашему вопросу, cairocffi импортируется как «cairo» в text.py weasyprint, а Pango, вероятно, является одной из зависимостей cairo. Поэтому, похоже, что-то не так с вашей установкой cairocffi. Не могли бы вы попробовать использовать pip3 и посмотреть, имеет ли это какое-то значение:

pip3 install cairocffi
person Andrew    schedule 27.06.2020