部署streamlit工程到Heroku

34 篇文章 2 订阅
17 篇文章 0 订阅

    streamlit是一个非常简洁的python语言web框架,用于机器学习、数据可视化等。这里介绍在将streamlit工程部署到Heroku。系统环境:Mac电脑 + streamlit 1.3.0

1、安装Git和Heroku CLi

1.1 安装Git

sudo apt-get install git

1.2 安装Heroku Cli

    在Heroku官网下载 Heroku CLi,如图(1)所示:

图(1) 下载Heroku CLi并安装

    下载之后,一路点击默认,直到安装完成。

2、创建Heroku账号

    在Heroku官网,使用自己的google邮箱注册一个账号,比如,hello@google.com,这个邮箱地址是用于将本地web工程打包Heroku远端,填写在setup.sh配置文件里。

3、创建streamlit工程

    这里以创建calculate项目为例,进行说明。

3.1 创建文件和文件夹

## 创建项目文件夹,并git初始化本地的main分支
mkdir calculate
cd calculate
git init
git brach -m main

## 创建主代码
touch app.py

## 创建配置文件
touch set.up
touch Profile
touch runtime.txt
touch requirements.txt

3.2 编写主程序app.py

    app.py文件内容如下:

import streamlit as st


## 两数相加
def add(a, b):
    return a + b


## 两数相减
def sub(a, b):
    return a - b


## 两数相乘
def mul(a, b):
    return a * b


## 两数相除
def div(a, b):
    if b == 0:
        return 0
    else:
        return a / b


def main():
    st.subheader("四则运算")
    num1 = st.number_input('数字1')
    num2 = st.number_input('数字2')
    res = 0
    with st.form("加减乘除"):
        col1, col2, col3, col4 = st.columns(4)
        with col1:
            bAdd = st.form_submit_button("相加")
            if bAdd:
                res = add(num1, num2)

        with col2:
            bSub = st.form_submit_button("相减")
            if bSub:
                res = sub(num1, num2)

        with col3:
            bMul = st.form_submit_button("相乘")
            if bMul:
                res = mul(num1, num2)

        with col4:
            bDiv = st.form_submit_button("相除")
            if bDiv:
                res = div(num1, num2)

        st.write("结果为:", res)


if __name__ == '__main__':
    main()

3.3 导出依赖包配置文件 requrements.txt

    点击Pycharm菜单栏上的[工具] ----》 同步Python的要求 --》在当前工程目录自动生成依赖包配置文件: requirements.txt,如图(2) 、图(3)所示:

图(2) 点击Pycharm菜单栏上的[工具] --> 同步Python要

图(3) 采用"强相等" 导出 requirements.txt文件

3.4 指定python的运行版本文件 runtime.txt

    runtime.txt的内容如下:

python-3.9.7

3.5 编写打包文件 setup.sh

    setup.sh的内容如下:

mkdir -p ~/.streamlit/

echo "\
[general]\n\
email = \"你的google邮箱地址\"\n\
" > ~/.streamlit/credentials.toml

echo "\
[server]\n\
headless = true\n\
enableCORS=false\n\
port = $PORT\n\
" > ~/.streamlit/config.toml

3.6 编写启动文件 Procfile

    Procfile的内容如下:

web: sh setup.sh && streamlit run app.py

3.7 本地测试app.py

    运行如下命令,测试app.py,测试完后再打包

streamlit run app.py

效果如下:

图(4) 本地测试工程

3.8 工程目录结构

    calculate项目的目录结构如下:

图(5) calculate项目的目录结构

4、打包工程到Heroku

    这里使用Git + Heroku CLi工具将streamlit类型的工程:calculate打包到Heroku。

4.1 登录Heroku

## 进入工程目录
cd calculate

## 登录Heroku
heroku login -i

## 输入注册时的邮箱和密码

4.2 保存修改到本地分支

git add .
git commit -m "init"

4.3 创建Heroku项目

创建一个Heroku项目,若没有指定名称,则Heroku自动填充。

heroku create

4.4 将本地分支推送到远程heroku的main分支

git push heroku main

4.5 设置进程个数

heroku的免费版本,默认设置1个进程;收费版本,可设置多个。

heroku ps:scale web=1

4.6 打开heroku远端项目

hero open

5、修改heroku远程项目名称

    由于使用heroku create创建的项目以字母+随机数 命名,不方便记忆。可使用 heroku apps:rename XXX 将远端项目名称进行修改,步骤如下:

## 1.打开终端,登录heroku
heroku login -i

## 2.进入本地工程目录,比如myProject目录
cd myProject

## 3.修改名称 (xxx是你的app的新名称,yyy是app的旧名称)
heroku apps:rename xxx --app yyy

## 4.将名称修改推送到远端
git remote rm heroku
heroku git:remote -a xxx

    比如,将远端项目名称从tranquil-island-36136 改成 tocalc,命令如下:

## 1.打开终端,登录heroku
heroku login -i

## 2.进入本地工程目录,此处为calculate
cd calculate

## 3.修改名称
## 由于calculate这个名称已被占用,所以使用tocalc作为新名称
heroku apps:rename tocalc --app tranquil-island-36136

## 4.将名称修改推送到远端
git remote rm heroku
heroku git:remote -a tocalc
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值