Переключение интерпретаторов Python для веб-приложения Heroku

Эта проблема Для контекста:

  • Я развернул приложение с Heroku
  • У меня есть Python 3.9.2, работающий локально в VS Code, и Python 3.10.8, работающий на компьютере Heroku.

В настоящее время я сталкиваюсь с проблемами, упомянутыми в этой ветке.

Я нашел решение своей проблемы, похоже, переключение интерпретаторов Python и копирование моих различных пакетов в это место.

Однако документации о том, как это сделать в Heroku, немного.

Любая помощь очень ценится :)

Что я пробовал Учитывая отсутствие документации по вышеизложенному, я пробовал следующее...

Я обнаружил, что развертывание Heroku выполняется в среде выполнения Python 3.10.8, тогда как на моем локальном компьютере была установлена ​​версия 3.9.2.

Затем я добавил runtime.txt в корень каталога приложения в Github, в котором указано использование 3.9.2, но когда я попытался повторно развернуть сборку, это не удалось.

Следуя журналам Heroku, это приводит меня к:

-----> Building on the Heroku-22 stack
-----> Using buildpack: heroku/python
-----> Python app detected
-----> Using Python version specified in runtime.txt
 !     Requested runtime 'cat runtime.txt
python-3.9.2' is not available for this stack (heroku-22).
 !     For supported versions, see: https://devcenter.heroku.com/articles/python-support
 !     Push rejected, failed to compile Python app.
 !     Push failed

Затем из журналов я понимаю, что пакет сборки не версии 3.9.2 не поддерживается.

Затем я загрузил python 3.11.0 на свой локальный компьютер (который поддерживается, как уже упоминалось здесь).

Деактивировал текущую виртуальную среду (используя 3.9.2).

Создал новую виртуальную среду.

Перезапустите приложение локально и проверьте, работает ли оно.

Затем я добавил изменения в репозиторий git.

Затем я попытался развернуть на Heroku. Я сейчас получаю:

-----> Building on the Heroku-22 stack
-----> Using buildpack: heroku/python
-----> Python app detected
-----> Using Python version specified in runtime.txt
 !     Requested runtime 'cat runtime.txt
python-3.11.0' is not available for this stack (heroku-22).
 !     For supported versions, see: https://devcenter.heroku.com/articles/python-support
 !     Push rejected, failed to compile Python app.
 !     Push failed

Затем я перехожу к документации поддержки

Затем я пытаюсь следовать указаниям службы поддержки «Проверка версии пакета сборки», поскольку моя версия Python поддерживается в соответствии с документацией.

Я запускаю команду для своего интерфейса командной строки, который проверяет, какая версия пакета сборки у меня есть. Я получил:

=== [appnamegoeshere] BuildPack URL
heroku/python

Итак, у меня есть пакет сборки «heroku/python».

Не знаете, куда идти отсюда?

Любая помощь высоко ценится :)

Я ничего не знаю о героку, и это больше похоже на вопрос конфигурации сервера, чем на программирование. Но правильный ли это вывод? Мне кажется коррумпированным. Requested runtime 'cat runtime.txt python-3.9.2' is not available for this stack Что там делает "cat runtime.txt"?

miken32 03.11.2022 18:15

@ miken32 вы правы, вероятно, это проблема с конфигурацией сервера. Учитывая, что я использую python, и, похоже, есть проблемы с пакетами, которые я пометил python. Проблема с WRT runtime.txt, я следил за этой документацией. В нем говорится: «Чтобы указать среду выполнения Python, добавьте файл runtime.txt в корневой каталог вашего приложения, в котором указывается точный номер используемой версии». Что я и сделал в Github...

e-driver1 03.11.2022 18:25

Возможно, вы захотите прочитать о «почему 'Кто-нибудь может мне помочь?' это не актуальный вопрос".

starball 03.11.2022 18:39

@ e-driver1, проблема в том, что вы добавили в свой runtime.txt, как описано ниже.

Chris 03.11.2022 20:15
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В документации по выбору среды выполнения сказано:

Чтобы указать среду выполнения Python, добавьте файл runtime.txt в корневой каталог вашего приложения, в котором указывается точный номер используемой версии:

$ cat runtime.txt
python-3.10.8

Часть cat runtime — это команда, которую вы можете запустить во многих системах (Linux, macOS и т. д.), чтобы распечатать содержимое файла. Он не должен быть включен в файл.

Ваш runtime.txt должен содержать только соответствующую строку python-x.y.z. На данный момент на стеке Heroku-22 можно использовать Python 3.9:

python-3.9.15

Питон 3.10:

python-3.10.8

Или Python 3.11:

python-3.11.0

Версия, которую вы используете на своем локальном компьютере, обычно просто должна соответствовать основной и второстепенной частям: ваш локальный Python 3.9.3 должен быть совместим с Heroku 3.9.15.

Обратите внимание, что список Heroku поддерживаемых версий Python довольно часто обновляется по мере выхода новых выпусков исправлений.

спасибо - исправил. Теперь он строится - это облегчение. :) Однако теперь проблема заключается в том, как устранить ошибку «Исключение с кодом ошибки: 0x38 (SPXERR_AUDIO_SYS_LIBRARY_NOT_FOUND)». За которым я не могу следить здесь, как описано выше...

e-driver1 03.11.2022 21:40

Другие вопросы по теме