Push отклонено, не удалось скомпилировать приложение Python - ошибка версии Python - PullRequest
0 голосов
/ 08 мая 2018

В прошлом я использовал Heroku с PHP, но впервые использую Heroku с Python и Flask. Для начала я хочу создать простое приложение «Hello World», а затем загрузить более сложную программу, которую я создал. Поэтому папка проекта содержит следующее:

  • Один скрипт Python "Hello World" (называется Main.py):

    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    @app.route("/")
    def index():
        return render_template("index.html", message="Hello World")
    
    if __name__ == "__main__":
        app.run(debug=True)
    
  • A templates файл с файлом index.html (см. Выше)

  • Один runtime.txt файл:

    python-3.6.5
    
  • Один requirements.txt файл:

    Flask==1.0.1
    

(проект изначально находится по адресу /Users/User/PycharmProjects/Project_HelloWorld.)

Однако, когда я ввожу git push heroku master в терминале, я получаю следующую ошибку:

Counting objects: 85, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (82/82), done.
Writing objects: 100% (85/85), 5.01 MiB | 3.13 MiB/s, done.
Total 85 (delta 24), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote:  !     The latest version of Python 3 is python-3.6.5 (you are using {\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf200
remote: {\fonttbl\f0\fmodern\fcharset0 Courier;}
remote: {\colortbl;\red255\green255\blue255;\red43\green47\blue49;\red237\green237\blue244;}
remote: {\*\expandedcolortbl;;\cssrgb\c21961\c24314\c25098;\cssrgb\c94510\c94510\c96471;}
remote: \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
remote: \deftab720
remote: \pard\pardeftab720\partightenfactor0
remote: 
remote: \f0\fs26 \cf2 \cb3 \expnd0\expndtw0\kerning0
remote: python-3.6.5}, which is unsupported).
remote:  !     We recommend upgrading by specifying the latest version (python-3.6.5).
remote:        Learn More: https://devcenter.heroku.com/articles/python-runtimes
remote: -----> Installing {\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf200
remote: {\fonttbl\f0\fmodern\fcharset0 Courier;}
remote: {\colortbl;\red255\green255\blue255;\red43\green47\blue49;\red237\green237\blue244;}
remote: {\*\expandedcolortbl;;\cssrgb\c21961\c24314\c25098;\cssrgb\c94510\c94510\c96471;}
remote: \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
remote: \deftab720
remote: \pard\pardeftab720\partightenfactor0
remote: 
remote: \f0\fs26 \cf2 \cb3 \expnd0\expndtw0\kerning0
remote: python-3.6.5}
remote:  !     Requested runtime ({\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf200
remote: {\fonttbl\f0\fmodern\fcharset0 Courier;}
remote: {\colortbl;\red255\green255\blue255;\red43\green47\blue49;\red237\green237\blue244;}
remote: {\*\expandedcolortbl;;\cssrgb\c21961\c24314\c25098;\cssrgb\c94510\c94510\c96471;}
remote: \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
remote: \deftab720
remote: \pard\pardeftab720\partightenfactor0
remote: 
remote: \f0\fs26 \cf2 \cb3 \expnd0\expndtw0\kerning0
remote: python-3.6.5}) is not available for this stack (heroku-16).
remote:  !     Aborting.  More info: https://devcenter.heroku.com/articles/python-support
remote:  !     Push rejected, failed to compile Python app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to evening-sierra-26101.
remote: 
To https://git.heroku.com/evening-sierra-26101.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/evening-sierra-26101.git'

Как я могу исправить эту ошибку и правильно запустить мое приложение на Heroku?

Также, когда я ввожу cat runtime.txt на терминале для runtime.txt выше, тогда я получаю следующий (довольно неожиданный?) Вывод:

{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf200
{\fonttbl\f0\fmodern\fcharset0 Courier;}
{\colortbl;\red255\green255\blue255;\red43\green47\blue49;\red237\green237\blue244;}
{\*\expandedcolortbl;;\cssrgb\c21961\c24314\c25098;\cssrgb\c94510\c94510\c96471;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\deftab720
\pard\pardeftab720\partightenfactor0

\f0\fs26 \cf2 \cb3 \expnd0\expndtw0\kerning0
python-3.6.5}%

Сначала я попробовал его с python-3.6.4 (вместо python-3.6.5) в runtime.txt, но я получал ту же ошибку.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Итак, я обнаружил, что все идет не так, и теперь мой «Hello World» может нормально работать на Heroku.

Проблема заключалась в том, что, хотя я заново создал файл runtime.txt и requirements.txtпо какой-то причине в них был вставлен следующий «текст» перед соответствующим текстом:

\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf200
remote: {\fonttbl\f0\fmodern\fcharset0 Courier;}
remote: {\colortbl;\red255\green255\blue255;\red43\green47\blue49;\red237\green237\blue244;}
remote: {\*\expandedcolortbl;;\cssrgb\c21961\c24314\c25098;\cssrgb\c94510\c94510\c96471;}
remote: \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
remote: \deftab720
remote: \pard\pardeftab720\partightenfactor0
remote: 
remote: \f0\fs26 \cf2 \cb3 \expnd0\expndtw0\kerning0

Это отображалось при ошибке, которую я опубликовал выше, когда пытался сделать git push heroku master в своем приложении и когдаЯ входил cat runtime.txt.Я, наконец, заметил это с помощью Hex-редактора.Поэтому Heroku читал не только python-3.6.4 в моем runtime.txt, но и все то, что я написал выше, прежде чем читать python-3.6.4., и именно поэтому я получил ошибку.

As @Крис отмечает ниже в комментариях, этот ненужный «текст» был добавлен (по некоторым причинам), потому что мои .txt файлы были сначала сохранены (по некоторым причинам) как .txt.rtf, а затем я вручную изменил расширение на .txt, не имеяИмейте в виду, что в них было сохранено что-то большее, даже если я изменил расширение. Я удалил весь этот ненужный «текст» с помощью моего шестнадцатеричного редактора, и теперь все работает нормально.

0 голосов
/ 08 мая 2018

Сначала я выясню, как запустить ваше приложение с Gunicorn, поскольку это самый распространенный сервер развертывания для приложений Flask. Чтобы запустить ваше приложение с gunicorn, вы должны иметь возможность pip install gunicorn, а затем запустить из корня вашего проекта: gunicorn my_file_name:app, где my_file_name == имя файла, который содержит ваш код Flask выше. Например. если ваш код Flask находится в файле с именем app.py, вы запустите gunicorn app:app.

Как только вы сможете запустить приложение с gunicorn, создайте Procfile, который указывает, что вы хотите, чтобы Heroku запускал сервер с gunicorn. Вот содержимое Procfile, которое должно находиться в корне файлов вашего проекта (в том же каталоге, что и requirements.txt):

web: gunicorn app:app

Тогда я бы обновил requirements.txt. Выполните pip freeze | grep gunicorn, чтобы получить версию с оружейным оружием, затем добавьте ее в файл requirements.txt:

Flask==1.0.1
gunicorn==19.7.1

Наконец, чтобы устранить непосредственную причину вашей ошибки, указанной выше, я бы установил runtime.txt в:

python-3.6.4

Тогда git push heroku master должно быть в состоянии помочь вам ...

Если ничего не помогло, - это простой репозиторий , в котором есть базовое приложение Flask с инструкциями по развертыванию Heroku в README. Он развернут здесь: https://myapp -name-1.herokuapp.com /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...