Колбу Python 3 установите wkhtmltopdf на героку - PullRequest
0 голосов
/ 09 октября 2018

У меня проблема с установкой двоичного файла wkhtmltopdf в моём приложении python heroku (колба).

Год назад (python 2) у меня уже была проблема, но я смог ее решить, добавив сначалаwkhtmltopdf-pack к требованиям и установить его на heroku, а затем установить конфиг var на WKHTMLTOPDF_BINARY=wkhtmltopdf-pack.Вот мой старый поток

Проблема сейчас:

Я пытаюсь использовать тот же подход для Python 3, но нет версии wkhtmltopdf-pack работает, каждый толчок отклоняется, и я не могу установить его.

Я пробовал эти версии в требованиях:

wkhtmltopdf-pack==0.12.5

wkhtmltopdf-pack==0.12.4

wkhtmltopdf-pack==0.12.3

wkhtmltopdf-pack==0.12.3.0.post1

wkhtmltopdf-pack==0.12.2.4

Я получаю эти ошибки:

No matching distribution

или

error: can't copy 'bin/wkhtmltopdf-pack': doesn't exist or not a regular file

и я помню, как однажды он сказал мне, что существует SyntaxError, и он не может что-то декодировать.

Альтернативный подход:

Кажется, можно также использовать buildpack-пакет, поэтому я попытался добавить buildpack-пакет:

heroku buildpacks:add https://github.com/dscout/wkhtmltopdf-buildpack.git

Я вижу, что buildpack-пакет был добавлен, но установки не было, и нет также config varдля wkhtmltopdf.Я не понимаю, как запустить установку, во всех документациях для пакетов сборки написано «добавьте пакет сборки, и вы готовы к работе».

Попытка создать PDF приводит к ошибке сервера здесь:

OSError: No wkhtmltopdf executable found: "b''"

РЕДАКТИРОВАТЬ:

Мне удалось установить buildpack:

enter image description here

Push былуспешно, но не было создано config var, и я понятия не имею, каков путь к двоичному файлу.

EDIT

Мне удалось найти файлы через herokubash:

app bin dev и т. д. lib lib64 потерян + найден процесс sbin sys tmp usr var

/ $ cd app
~ $ cd vendor
~/vendor $ dir
wkhtmltox
~/vendor $ cd wkhtmltox
~/vendor/wkhtmltox $ dir
lib
~/vendor/wkhtmltox $ cd lib
~/vendor/wkhtmltox/lib $ dir
libwkhtmltox.so  libwkhtmltox.so.0  libwkhtmltox.so.0.12  libwkhtmltox.so.0.12.3
~/vendor/wkhtmltox/lib $ exit

Теперь я попытался все эти файлы, но все выдают ошибку:

OSError: wkhtmltopdf exited with non-zero code -11. error

Вот как я задаю путь:

# WKHTMLTOPDF config
if 'DYNO' in os.environ:
    print ('loading wkhtmltopdf path on heroku')
    MYDIR = os.path.dirname(__file__)    
    WKHTMLTOPDF_CMD = os.path.join(MYDIR + "/vendor/wkhtmltox/lib/", "libwkhtmltox.so")
else:
    print ('loading wkhtmltopdf path on localhost')
    MYDIR = os.path.dirname(__file__)    
    WKHTMLTOPDF_CMD = os.path.join(MYDIR + "/static/executables/bin/", "wkhtmltopdf.exe")

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Я смог решить проблему самостоятельно, следуя моему первому подходу.

Я нашел другой wkhtmltopdf-pack на pypi и добавил его к своему requirements.txt:

wkhtmltopdf-pack-ng==0.12.3.0

Heroku смог установить этот пакет.

После этого я добавил конфигурационную переменную для wkhtmltopdf:

heroku config:set WKHTMLTOPDF_BINARY=wkhtmltopdf-pack

Установка завершена.Мне нужно использовать правильный путь сейчас в моем приложении:

if 'DYNO' in os.environ:
    print ('loading wkhtmltopdf path on heroku')
    WKHTMLTOPDF_CMD = subprocess.Popen(
        ['which', os.environ.get('WKHTMLTOPDF_BINARY', 'wkhtmltopdf-pack')], # Note we default to 'wkhtmltopdf' as the binary name
        stdout=subprocess.PIPE).communicate()[0].strip()
else:
    print ('loading wkhtmltopdf path on localhost')
    MYDIR = os.path.dirname(__file__)    
    WKHTMLTOPDF_CMD = os.path.join(MYDIR + "/static/executables/bin/", "wkhtmltopdf.exe")

Вот так.

0 голосов
/ 19 октября 2018

Лучший подход для установки wkhtmltopdf на Heroku - получить двоичный файл wkhtmltopdf для python 3 вместо wkhtmltopdf-pack, и вы можете добиться этого с помощью pydf .

. Вы можете установитьон просто использует pip как:

pip install python-pdf

или для Python 2:

pip install python-pdf==0.30.0

В отличие от подхода, основанного на buildpack, pydf устанавливается с включенным двоичным файлом wkhtmltopdf, делаяон очень прост в использовании, и это правильный подход для Heroku.

Но если вы все еще хотите придерживаться build-pack wkhtmltopdf, вот еще одно решение, которое вы можете попробовать:

Через: CLI Установка

$ heroku create --buildpack https://github.com/homelight/wkhtmltox-buildpack.git

Или вручную:

Добавьте следующую строку в ваш .buildpacks файл

https://github.com/homelight/wkhtmltox-buildpack.git

Обратите внимание, что этот buildpack-пакет совместим только со стеком cedar-14.Вы можете использовать стек герока: установите cedar-14, чтобы установить правильный стек.

...