Python-Dash部署要点

我的环境是用的 Python3.7 + MacOS

在做Dash仪表面板时,在开发阶段我们只能在本地部署,然后只能通过 localhost:8050去访问。

但是我们在做完之后,可能需要部署到实际的网络上,这样其他人也可以访问。

我这里使用的是Heroku+Gunicorn,这个可以免费使用,也可以根据需要升级自己的服务,网址:Heroku官网

打开之后,注册一个账号,完成激活之后,还要下载一个客户端,Heroku CLI,也是跟着官方文档来:Heroku-CLI

另外,还需要安装一些组件:

1、Git,其他系统需要安装Git;

2、virtualenv,虚拟环境:pip install virtualenv

接下来,创建你的功能目录,具体路径自己选择:

$ mkdir my_dash_app
$ cd my_dash_app

使用 git 和 virtualenv 初始化文件夹,一个控制版本,一个是创建一个虚拟环境,这样可以保存所有Python的依赖项

$ git init
$ virtualenv venv
$ source venv/bin/activate

上面的source是激活这个虚拟环境,每次打开项目的时候,需要运行下,否则你安装什么组件的时候,就安装到自己的系统环境去了,虚拟环境并没有安装。

现在开始安装你所需要的组件:

$ pip install dash
$ pip install dash-renderer
$ pip install dash-core-components
$ pip install dash-html-components
$ pip install plotly

还需要一个Web服务器的组件,这里用的是 Gunicorn,同样也是在虚拟环境安装的:

$ pip install gunicorn

现在,我们可以创建需要展示画面的app.py文件了,在工程根目录创建这些文件:

1、app.py 文件,这里面就是我们编写代码的文件了,也就是Dash代码;

2、创建一个.gitignore文件,这个可以看这里:Python忽略文件

3、创建 requirements.txt 文件,当然也可以通过运行下面的命令创建,这条命令是将当前项目用到的依赖项自动加到这个文件里面来:pip freeze > requirements.txt,如果有新的依赖项安装了,就要运行下这个命令;

4、用于部署的Procfile文件,这个是一个没有后缀的文件,具体可以参考这里:Procfile文件

好了,现在我们在app.py里面写点什么吧:

import os
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash(__name__)
server = app.server
app.layout = html.Div([
    html.H2('Hello World'),
    dcc.Dropdown(
        id='dropdown',
        options=[{'label': i, 'value': i} for i in ['LA', 'NYC', 'MTL']],
        value='LA'
    ),
    html.Div(id='display-value')
])
@app.callback(dash.dependencies.Output('display-value', 'children'),
              [dash.dependencies.Input('dropdown', 'value')])
def display_value(value):
    return 'You have selected "{}"'.format(value)
if __name__ == '__main__':
    app.run_server(debug=True)

在这里,我们需要把 app 和 server 写到 Procfile 文件中去:

web: gunicorn app:server

这个格式也可以参考上面给的Procfile文件网址,web变量表示将服务器指定为gunicorn,app指的是app.py文件,server就是这个文件中的服务器变量。具体为什么,我也是看的资料!以后弄懂再来解释吧。

接下来就是部署了:

1、安装 Heroku CLI,我在上面说了的,如果没有请安装好;

2、运行下面的命令:

$ heroku create your-app-name
$ git add .
$ git commit -m 'Your-commit-message'
$ git push heroku master

第一句是创建一个 heroku app,创建完成后输出这个:

后面两句是将代码提交到git本地库,进行版本管理,如果需要上传到git服务器,那么需要通过命令登陆你的git账号就可以了。

另外,如果你修改了代码,也需要运行第二三句,才能更新到版本管理库中去。

最后一句是通过git将你本地的资源部署到Heroku中去,运行之后会有一大堆东西打印,我结了最后的几行:

这就表示你部署成功了,并且上面也有访问的链接,我的就是  https://test-dash-python.herokuapp.com/ 

这次你到浏览器上打开就能看到你的网页咯!

PS:

由于我前面写错了代码,第一次部署没有成功,打不开网页,它会提示你使用一个命令查看什么地方出错了:

heroku logs

这个命令可以打印出最近访问你网页的log信息,当然也有错误信息了,然后就跟着错误提示,修改你的代码即可。

猜你喜欢

转载自blog.csdn.net/pz789as/article/details/91881042