pythonanywhere virtualenv 软件包未导入 Flask 应用程序

问题描述 投票:0回答:1

我是 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__
文件来实例化应用程序是否是一个坏主意,并且可能是一个问题。

flask virtualenv pythonanywhere site-packages
1个回答
0
投票

请注意,此问题已得到解决。 WSGI 脚本严格要求应用程序是一个名为“application”的变量。

请参阅此论坛帖子

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.