【问题标题】:Import Error: No module named sqlalchemy导入错误:没有名为 sqlalchemy 的模块
【发布时间】:2018-07-06 15:13:34
【问题描述】:

我根据以下教程设置了一个 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

但是,我可以使用 python 运行从命令行导入 sqlalchemy 的脚本。而且我没有虚拟环境等(我只是按照上面链接的基本安装)。

所以 WSGI 能够在第 1 行导入烧瓶,但不能在第 2 行导入 sqlalchemy...知道如何解决这个问题吗?谢谢!

查看文件:

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

<VirtualHost *:80>
    ServerName ...my_public_domain...
    ServerAdmin admin@mywebsite.com
    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!!!"
...

【问题讨论】:

  • 根据 mod_wsgi 文档,您是否验证过为什么 Python 版本/安装 mod_wsgi 编译的?我可能没有使用您安装 SQLAlchemy 的那个。 modwsgi.readthedocs.io/en/develop/user-guides/…
  • 您还应该考虑使用推荐的 mod_wsgi 守护程序模式,而不是默认的嵌入模式。

标签: python mod-wsgi apache2.4


【解决方案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)。

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 1970-01-01
    • 2018-07-10
    • 2015-11-30
    • 2012-05-25
    • 2012-03-16
    • 2011-12-10
    • 2016-07-18
    相关资源
    最近更新 更多