python - 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 吗?
解决方案
您指向的文档(这里是针对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
推荐阅读
- android - Xamarin.Forms:自定义字体和 FontAttributes
- jquery - jquery表单通过带有值的按钮提交
- linux - RSYNC 需要 ssh 目录或文件才能成功
- java - Java,第二次材料交互不起作用?
- android - 通过更改包名,会产生什么后果?
- powershell - 拆分字符串,然后分配拆分
- ruby-on-rails - 解码和更新图像属性 -carrierwave gem
- javascript - 如何制作 React Native 模态窗口?
- elasticsearch - 一个索引中的 Elasticsearch 字段出现在另一个索引中
- c# - Newtonsoft.Json.JsonReaderException:'从 JsonReader 读取 JArray 时出错。当前 JsonReader 项不是数组