首页 > 解决方案 > OVH 上的 Flask 应用程序:ImportError: No module named 'flask'

问题描述

我正在使用烧瓶来构建一个托管在 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 吗?

标签: pythonflaskovh

解决方案


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

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

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

您需要通过 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

推荐阅读