Я создал приложение Python, которое вы можете найти на GitHub. Я хотел проверить, смогу ли я его развернуть и выбрал Heroku, это первый раз, когда я что-то развертываю. Даже если он отлично работает локально, он не может развернуть на Heroku со следующей ошибкой TypeError: the JSON object must be str, not 'bytes'
. Похоже, что ошибка возникает из lockfile = json.load(f)
в buildpack.
При чтении ошибок, связанных с json.load()
вопрос о том, почему эта деплантоция не удалась, - это сборщик Heroku Python, предназначенный исключительно для приложения Python 2?
Полный журнал:
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
Я указал, что хотел использовать Python 3.6.5
[[source]]
url = "https://pypi.python.org/simple"
[packages]
requests = { extras = ['socks'] }
[requires]
python_version = "3.6.5"
Я выбрал Python buildpack в настройках:
Я использую Python 3.5.2. Или, по крайней мере, я так думаю! И вот полные требования.
Я не знаю, но я попытался развернуть приложение на OpenShift. Приложение в журнале показывает, что он не работает во время загрузки зависимостей, я думаю, что можно с уверенностью сказать, что это связано с памятью. Я не пытался увеличить ограничение памяти для сборки, чтобы допустить, чтобы все еще было готово.
Я уже проверил
.json()
: lockfile.json(f)
?Я использую 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.