Ошибка импорта: нет модуля с именем sqlalchemy

Я установил приложение Apache2 / WSGI / Flask на основе следующего руководства: https://amunategui.github.io/idea-to-pitch/#installing-flask. Я работал как шарм, но когда я настроил его и изменил файл python для подключения к SQL, я могу найти в журналах в /var/log/apache2/error.log:

File "/var/www/FlaskApps/FlaskApps.wsgi", line 8, in <module>
from project import app as application
File "/var/www/FlaskApps/FirstApp/project.py", line 2, in <module>
from sqlalchemy import create_engine
ImportError: No module named sqlalchemy

Однако я могу запускать скрипты, которые импортируют sqlalchemy из командной строки с помощью python. И у меня нет виртуальных envs и т. Д. (Я просто выполнил базовую установку по ссылке выше).

Итак, WSGI может импортировать фляжку в строке 1, но не sqlalchemy в строке 2 ... Есть идеи, как это исправить? Спасибо!

Смотрите файлы:

/etc/apache2/sites-available/FirstApp.conf

<VirtualHost *:80>
    ServerName ...my_public_domain...
    ServerAdmin [email protected]
    WSGIScriptAlias / /var/www/FlaskApps/FlaskApps.wsgi
    <Directory /var/www/FlaskApps/FirstApp/>
        Order allow,deny
        Allow from all
    </Directory>
    <Directory /var/www/FlaskApps/FirstApp/static/>
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

/var/www/FlaskApps/FlaskApps.wsgi

#! /usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApps/FirstApp/")

# home points to the project.py file
from project import app as application
application.secret_key = "somesecretsessionkey"

/var/www/FlaskApps/FirstApp/project.py

from flask import Flask, render_template, request, redirect, url_for, flash, jsonify
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from database_setup import Restaurant, Base, MenuItem

engine = create_engine("mysql+mysqldb://root:password@localhost/dbname")  
Base.metadata.bind = engine  
DBSession = sessionmaker(bind=engine)
session = DBSession()

app = Flask(__name__)

@app.route('/')
def project():
    return  "This is from Flask!!!"
...

person CorneeldH    schedule 27.01.2018    source источник
comment
В соответствии с документацией по mod_wsgi, вы проверили, для какой версии / установки Python был скомпилирован mod_wsgi? Возможно, я не использую то, в которое вы устанавливаете SQLAlchemy. modwsgi.readthedocs. io / en / develop / user-guides /   -  person Graham Dumpleton    schedule 27.01.2018
comment
Вам также следует использовать рекомендуемый режим демона mod_wsgi, а не встроенный режим по умолчанию.   -  person Graham Dumpleton    schedule 27.01.2018


Ответы (1)


Спасибо за указатели @Graham Dumpleton

В итоге я установил WSGIDaemonProcess (см. http://flask.pocoo.org/docs/0.12/deploying/mod_wsgi/#configuring-apache) и виртуальные среды python, чтобы убедиться, что я знал, какой python настраивать (см .: https://askubuntu.com/questions/244641/how-to-set-up-and-use-a-virtual-python-environment-in-ubuntu).

person CorneeldH    schedule 29.01.2018