Import Error: No module named sqlalchemy
Import Error: No module named 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
但是,我能够 运行 使用 python 从命令行导入 sqlalchemy 的脚本。而且我没有虚拟环境等(我只是按照上面 link 的基本安装)。
所以 WSGI 能够在第 1 行导入 flask,但不能在第 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!!!"
...
感谢指点@Graham Dumpleton
我最终设置了 WSGIDaemonProcess(参见:http://flask.pocoo.org/docs/0.12/deploying/mod_wsgi/#configuring-apache) and python virtual environments to ensure I knew which python to configure (see: https://askubuntu.com/questions/244641/how-to-set-up-and-use-a-virtual-python-environment-in-ubuntu)。
我根据以下教程设置了一个 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 的脚本。而且我没有虚拟环境等(我只是按照上面 link 的基本安装)。
所以 WSGI 能够在第 1 行导入 flask,但不能在第 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!!!"
...
感谢指点@Graham Dumpleton
我最终设置了 WSGIDaemonProcess(参见:http://flask.pocoo.org/docs/0.12/deploying/mod_wsgi/#configuring-apache) and python virtual environments to ensure I knew which python to configure (see: https://askubuntu.com/questions/244641/how-to-set-up-and-use-a-virtual-python-environment-in-ubuntu)。