我是 pythonanywhere 的新手,我正在尝试设置一个 Flask Web 应用程序。
我正在使用虚拟环境:
/home/SpaceMeerkat/.virtualenvs/flaskenv
当我激活 venv 并运行时:
from werkzeug.urls import url_quote
from flask import Flask, g
import pandas as pd
...软件包已导入,没有错误。
但是,当我使用 WSGI 脚本运行我的 Web 应用程序时:
import sys
path = '/home/SpaceMeerkat/4211-IOMS/thredspace'
if path not in sys.path:
sys.path.append(path)
#
from __init__ import create_app # noqa
app = create_app()
调用脚本:
import os
from flask import Flask, g
from flask_cors import CORS
import pandas as pd
# =============================================================================
# Setup app config
# =============================================================================
def create_app(test_config=None):
app = Flask(__name__, instance_relative_config=True)
CORS(app)
app.config.from_mapping(
SECRET_KEY='dev',
DATABASE=os.path.join(app.instance_path, 'thredspace.sqlite'),
)
if test_config is None:
app.config.from_pyfile('config.py', silent=True)
else:
app.config.from_mapping(test_config)
try:
os.makedirs(app.instance_path)
except OSError:
pass
from . import home
app.register_blueprint(home.bp)
from . import db
db.init_app(app)
from . import auth
app.register_blueprint(auth.bp)
from .templates.creation_suite import project_management
app.register_blueprint(project_management.bp)
return app
我遇到这样的错误:
2023-11-24 15:34:44,071: Error running WSGI application
2023-11-24 15:34:44,078: ImportError: cannot import name 'url_quote' from 'werkzeug.urls' (/home/SpaceMeerkat/.virtualenvs/flaskenv/lib/python3.10/site-packages/werkzeug/urls.py)
2023-11-24 15:34:44,078: File "/var/www/spacemeerkat_pythonanywhere_com_wsgi.py", line 79, in <module>
2023-11-24 15:34:44,079: from thredspace.main_flask_app_file import app as application # noqa
2023-11-24 15:34:44,079:
2023-11-24 15:34:44,079: File "/home/SpaceMeerkat/4211-IOMS/thredspace/__init__.py", line 14, in <module>
2023-11-24 15:34:44,079: from flask import Flask, g
2023-11-24 15:34:44,079:
2023-11-24 15:34:44,079: File "/home/SpaceMeerkat/.virtualenvs/flaskenv/lib/python3.10/site-packages/flask/__init__.py", line 5, in <module>
2023-11-24 15:34:44,079: from .app import Flask as Flask
2023-11-24 15:34:44,079:
2023-11-24 15:34:44,079: File "/home/SpaceMeerkat/.virtualenvs/flaskenv/lib/python3.10/site-packages/flask/app.py", line 30, in <module>
2023-11-24 15:34:44,079: from werkzeug.urls import url_quote
和
2023-11-24 15:49:54,151: Error running WSGI application
2023-11-24 15:49:54,152: ModuleNotFoundError: No module named 'pandas'
2023-11-24 15:49:54,152: File "/var/www/spacemeerkat_pythonanywhere_com_wsgi.py", line 79, in <module>
2023-11-24 15:49:54,152: from thredspace.main_flask_app_file import app as application # noqa
2023-11-24 15:49:54,152:
2023-11-24 15:49:54,152: File "/home/SpaceMeerkat/4211-IOMS/thredspace/__init__.py", line 16, in <module>
2023-11-24 15:49:54,152: import pandas as pd
virtualenv 已正确指向,因此应该可以找到包,但由于某种原因
pandas
没有找到。
我检查了
Werkzeug
与 Flask 的兼容性,因为众所周知的问题,您往往必须匹配它们。
为了确定起见,我什至将它们回滚到
Werkzeug==2.3.7
和 Flask==2.1.3
。
我在做一些极其愚蠢的事情吗?因为据我所知,错误日志显示它正在使用正确的 virtualenv,但事实上没有找到它们,这真的很奇怪。我确实想知道尝试运行
__init__
文件来实例化应用程序是否是一个坏主意,并且可能是一个问题。
请注意,此问题已得到解决。 WSGI 脚本严格要求应用程序是一个名为“application”的变量。
请参阅此论坛帖子。