У меня была точно такая же проблема, когда я изучал "Flask Web Development". Я потратил целый день, пытаясь решить его, и в конце концов мне это удалось. Это не так сложно, как метод Андре С. Андерсена.
- Убедитесь, что вы находитесь на главной ветке. Не другие отрасли.
Книга является вторым изданием Flask Web Development Мигеля Гринберга. Глава 17. Развертывание. Когда вы работаете до 1007 * Развертывание с помощью git push . После git push heroku master
загрузите приложение на пульт геройки. Приложение развернуто и запущено, но оно не будет работать правильно, поскольку команда развертывания, которая инициализирует таблицы базы данных, еще не выполнена. Вам нужно использовать
heroku run flask deploy
для создания базы данных по героку. Вот откуда возникла проблема.
Потому что в этот момент ваша ГИТ-репо ГЛАВА находится на 17c. Это еще не основная ветвь. Если вы сделаете коммит сейчас, это не изменит среду герою. Значение, когда вы делаете
git branch
Вы увидите:
(HEAD detached from 17c)
master
Но это не то, что вы хотите. Не голова прикреплена к 17c. Вы хотите видеть только master
Что достигается с помощью
git checkout master
Тогда git branch
покажет только главную ветвь. Поэтому вы можете вносить коррективы в проект и обновлять геройку. Делайте это, потому что вы в конечном итоге будете использовать git push to master branch. Я думаю, что вы можете сделать git push в другие ветки, чтобы heroku работал, но я не знаю, как это сделать.
- Изменить
psycopg2==2.7.3
на psycopg2-binary==2.8.3
Поскольку psycopg2 2.7.3 выдаст вам ошибку GLIBC_PRIVATE. (Вы можете проверить это с помощью heroku run bash
, затем запустить python, импортировать psycopg2, если зависимость heroku составляет 2.7.3, то вы увидите ту же ошибку.)
Теперь измените строку требований / heroku.txt (зависимость от окружающей среды heroku) psycopg2==2.7.3
на psycopg2-binary==2.8.3
. По какой-то причине бинарная версия psycopg2 будет работать без проблем (не знаю почему. Но я видел МНОГО дискуссий о стековере). Тогда,
git add .
git commit -m "notes"
Как обычно.
git push heroku master
толчок к герою ветки мастера. Если вы не сделаете первый шаг, то git покажет Everything up-to-date
. Поэтому не будет вносить изменения, потому что вы обязуетесь не осваивать. Теперь вы можете видеть, что git загружает psycopg2-бинарный файл.
Вы можете дважды проверить, что это действительно psycopg2-бинарный файл, открыв heroku bash, затем pip list
. Вы увидите как psycopg2, так и psycopg2-бинарный файл. Теперь запустите python, вы можете импортировать psycopg2 без проблем.
Наконец-то. heroku run flask deploy
. Voila!
Я застрял на первом шаге. Поскольку все изменения, которые я сделал с героем проекта, просто не обновляются.