ImportError: невозможно импортировать имя «SQLAlchemy» из «flask_sqlalchemy» (неизвестное местоположение) - PullRequest
0 голосов
/ 27 ноября 2018

После успешного переноса моего приложения на python на heroku без каких-либо проблем, я выполнил команду heroku ps:scale web=1 и обнаружил ошибку ниже в логах heroku;

2018-11-27T08:34:03.963364+00:00 app[web.1]: from flask_sqlalchemy import SQLAlchemy
2018-11-27T08:34:03.971768+00:00 app[web.1]: ImportError: cannot import name 'SQLAlchemy' from 'flask_sqlalchemy' (unknown location)
2018-11-27T08:34:03.972159+00:00 app[web.1]: [2018-11-27 08:34:03 +0000] [11] [INFO] Worker exiting (pid: 11)
2018-11-27T08:34:04.163955+00:00 app[web.1]: Traceback (most recent call last):

Несмотря на настройку виртуальной среды для sqlalchemy, используя следующие шаги/ команды;

virtualenv sqlalchemy
source flask.ext.sqlalchemy/bin/activate
pip install sqlalchemy
deactivate

virtualenv flask_sqlalchemy
source flask_sqlalchemy/bin/activate
pip install flask-sqlalchemy
deactivate

При следующем импорте в мой код Python:

import flask_sqlalchemy
from flask_sqlalchemy import SQLAlchemy

и необходимых файлов Heroku;

Содержимое Procfile:

web: gunicorn project:app  --log-file - --log-level debug

Содержимое require.txt;

Flask
gunicorn

Содержимое runtime.txt;

python-3.7.1

SQLAlchemy не может быть найден.

Пожалуйста, найдите мои коды здесь

Приложение python хорошо работает на локальном компьютере, но не на Heroku.Есть ли подходящий способ установить SQLAlchemy для правильного импорта?Или есть другой подход к этому?

1 Ответ

0 голосов
/ 27 ноября 2018

Из heroku документации :

В файле needs.txt перечислены все зависимости приложения.Когда приложение развернуто, Heroku читает этот файл и устанавливает соответствующие зависимости Python с помощью команды pip install -r .

В вашем репозитории github есть require.txt, но в нем отсутствуют зависимости, такие как SQLAlchemy и некоторые другие, возможно, вы установили локально.

Чтобы сохранить все пакеты, которые вы установили локально, откройте командную строку и перейдите в каталог проекта и (если вы используете virtualenv,сначала активируйте этот env, затем перейдите в каталог проекта с помощью командной строки) и введите:

pip freeze> needs.txt

Это сохранит все пакеты, которые вы установили локально.

...