TypeError с помощью json.load () из пакета сборки при развертывании приложения

1

Я создал приложение Python, которое вы можете найти на GitHub. Я хотел проверить, смогу ли я его развернуть и выбрал Heroku, это первый раз, когда я что-то развертываю. Даже если он отлично работает локально, он не может развернуть на Heroku со следующей ошибкой TypeError: the JSON object must be str, not 'bytes'. Похоже, что ошибка возникает из lockfile = json.load(f) в buildpack.

Вопрос

При чтении ошибок, связанных с json.load() вопрос о том, почему эта деплантоция не удалась, - это сборщик Heroku Python, предназначенный исключительно для приложения Python 2?

Неисправный журнал сборки Heroku

Полный журнал:

Activity Feed Build Log
ID 4d444270-f24f-461c-9079-bcd9134cec62

-----> Python app detected
 !     The latest version of Python 3 is python-3.6.5 (you are using python-3.5.2, which is unsupported).

 !     We recommend upgrading by specifying the latest version (python-3.6.5).
       Learn More: https://devcenter.heroku.com/articles/python-runtimes
-----> Installing pip
Traceback (most recent call last):

  File "/app/tmp/buildpacks/779a8bbfbbe7e1b715476c0b23fc63a2103b3e4131eda558669aba8fb5e6e05682419376144189b29beb5dee6d7626b4d3385edb0954bffea6c67d8cf622fd51/vendor/pipenv-to-pip", line 23, in <module>
    main()
  File "/app/tmp/buildpacks/779a8bbfbbe7e1b715476c0b23fc63a2103b3e4131eda558669aba8fb5e6e05682419376144189b29beb5dee6d7626b4d3385edb0954bffea6c67d8cf622fd51/vendor/pipenv-to-pip", line 11, in main
    lockfile = json.load(f)

  File "/app/.heroku/python/lib/python3.5/json/__init__.py", line 268, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "/app/.heroku/python/lib/python3.5/json/__init__.py", line 312, in loads
    s.__class__.__name__))

TypeError: the JSON object must be str, not 'bytes'
 !     Push rejected, failed to compile Python app 
 !     Push failed

Pipfile

Я указал, что хотел использовать Python 3.6.5

[[source]]
url = "https://pypi.python.org/simple"

[packages]
requests = { extras = ['socks'] }

[requires]
python_version = "3.6.5"

buildpack

Я выбрал Python buildpack в настройках:

Изображение 174551

Дополнительная информация

  1. используемые версии:

Я использую Python 3.5.2. Или, по крайней мере, я так думаю! И вот полные требования.

  1. Бывшая попытка развертывания

Я не знаю, но я попытался развернуть приложение на OpenShift. Приложение в журнале показывает, что он не работает во время загрузки зависимостей, я думаю, что можно с уверенностью сказать, что это связано с памятью. Я не пытался увеличить ограничение памяти для сборки, чтобы допустить, чтобы все еще было готово.

  1. Проверенные ответы

Я уже проверил

Теги:
heroku
web-deployment

1 ответ

1

Я использую Python 3.5.2.

Heroku поддерживает только Python 2.7 и 3.6; Python 3.5 не поддерживает передачу двоичного файла в json.load(). Журнал, который вы опубликовали, прямо говорит вам:

(you are using python-3.5.2, which is unsupported).

Также см. Проблему heroku-buildpack-python # 678:

тянуть запросы приняты! Обратите внимание, что мы официально одобряем использование последних версий 2.7.x и 3.6.x.

Запрос на подачу был отправлен и принят, обновление до версии v135 должно исправить это. Тем не менее, я недостаточно знаком с Heroku, чтобы иметь возможность сказать вам, можете ли вы это сделать. Я бы просто обновил версию Python до версии 3.6.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню