【问题标题】:Flask app on OVH : ImportError: No module named 'flask'OVH 上的 Flask 应用程序:ImportError: No module named 'flask'
【发布时间】:2021-11-11 01:01:36
【问题描述】:

我正在使用烧瓶构建一个托管在 OVH 上的项目。不幸的是,它不起作用。

这是我的 app.py :

from flask import Flask, render_template, request, make_response
app = Flask(__name__)

@app.route('/')
@app.route('/test')
def test():
  return render_template('test.html')


if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0')

我的要求.txt:

click==7.1.2
Flask==1.1.4
itsdangerous==1.1.0
Jinja2==2.11.3
MarkupSafe==1.1.1
Werkzeug==1.0.1

我的树结构:

www
-templates
--- index.html
-requirement.txt
-my_py3_env
---pyvenv.cfg
---lib
-----python3.5
-------site-packages
---------flask
---bin
-app.py
-__pycache__

但是,我得到了这个输出:

Traceback (most recent call last):
  File "/usr/share/passenger/helper-scripts/wsgi-loader.py", line 369, in <module>
    app_module = load_app()
  File "/usr/share/passenger/helper-scripts/wsgi-loader.py", line 76, in load_app
    return imp.load_source('passenger_wsgi', startup_file)
  File "/usr/lib/python3.5/imp.py", line 172, in load_source
    module = _load(spec)
  File "<frozen importlib._bootstrap>", line 693, in _load
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 673, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/home/deposec/www/app.py", line 2, in <module>
    import flask
ImportError: No module named 'flask'

有人知道为什么吗?

编辑:我添加了以下 .platform.app.yaml :

name: app
type: python:3.5

web:
    commands:
        start: "gunicorn -b $PORT project.wsgi:application"
    locations:
        "/":
            root: ""
            passthru: true
            allow: false
        "/static":
            root: "static/"
             allow: true

hooks:
    build: |
        pip install -r requirements.txt
        pip install -e .
        pip install gunicorn

mounts:
    tmp:
        source: local
        source_path: tmp
    logs:
        source: local
        source_path: logs

disk: 512

但是我仍然得到 No module named 'flask'... 我在某个地方还需要一个 wsgi.py 吗?

【问题讨论】:

  • 你有文件.platform.app.yaml 吗?参考:docs.ovh.com/gb/en/web-paas/languages-python/…
  • 感谢您的帮助。我在 www 文件夹中添加了一个 .platform.app.yaml ,如您的参考资料中所述。它不起作用,但似乎我在某个地方也需要一个 wsgi.py ?我应该在这个列表中选择哪一个? flask.palletsprojects.com/en/2.0.x/deploying/index.html
  • 您在 OVH 使用什么样的服务/服务器?虚拟主机 ?虚拟主机?你是如何安装你的 requirements 的?你在某处运行pip install -r requirements.txt 吗?
  • @Galiup,你能复制你的platform.app.yaml 文件和你得到的错误吗?
  • @GonzaloOdiard 我用我用过的platform.app.yaml 编辑了我的帖子。我仍然得到同样的错误。但是我的启动脚本仍然是 app.py,也许它应该是 yaml 文件?

标签: python flask ovh


【解决方案1】:

您指向的文档(here 是针对 OVHcloud Web PaaS powered by Platform.sh 报价的,而不是 Cloud Web 报价。这是两种不同的产品。

这意味着您的 .platform.app.yaml 在 Cloud Web 上被忽略。

要在 Cloud Web 中安装 Python 依赖项,唯一可用的文档是 here,而且似乎只有法语版本。

您需要通过 SSH 连接到您的云 Web 实例才能运行您的 pip install 命令。

看起来像:

# 1 - Connect to your Cloud Web through SSH
# You can find these infos in OVH Manager > Web > Your cloudweb > "FTP - SSH"
ssh <cloudweb_username>@sshcloud.cluster024.hosting.ovh.net -p <your port>

# 2 - Setup a Python virtualenv
pip3 install --user virtualenv
export PATH=$PATH:~/.local/bin
echo "export PATH=$PATH:~/.local/bin" >> ~/.profile

# If "www" is your root dir, otherwise adjust it:
cd www/
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt

【讨论】:

    猜你喜欢
    • 2017-02-20
    • 1970-01-01
    • 2021-07-20
    • 2019-04-03
    • 2013-06-27
    • 2018-07-20
    • 1970-01-01
    • 2017-11-23
    • 2016-06-13
    相关资源
    最近更新 更多