Flask网站轻松部署到免费主机Heroku(3) - 多平台 Multiple Buildpacks, IPython

有时你的app应用,会用到多个平台,比如:Python + Node.js

ref: https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app
Flask网站轻松部署到免费主机Heroku(2) - 清除数据
vue2+Flask网站,轻松部署到免费主机Heroku(1)

HowTo:

heroku buildpacks --app 
===  Buildpack URL
heroku/python

heroku buildpacks:set heroku/python
heroku buildpacks:add --index 1 heroku/nodejs
# 1 is the first buildpack

选择特定的Python版本:
create runtime.txt file in root dir

cat runtime.txt
python-2.7.13
# or python-3.6.2

Anaconda Jupyter (IPython)

调试:
%pdb on

from IPython.core.debugger import Tracer
def f1(a, b):
    Tracer()()
    a+=b
    Tracer()()
    return a/b

f1(3, 2)

快捷键:

  • l 显示上下文
  • a(rgs) 打印所有变量
  • b 显示断点
  • n 下一行(step over)
  • s step into
  • u 返回上一级
  • q 退出

Anaconda

Conda 支持IPython,集成了主要的科学计算python packages,300多MB,适合懒人下载
并且方便做环境管理、package管理

常用命令

创建虚拟环境:

conda create --name <环境名字> <安装哪些packages>
比如,创建一个python3的环境,装好 anaconda标准的packages:
conda create -n py35 python=3 anaconda

切换环境

conda env list

activate <环境名字>
deactivate
conda env export > environment.yml# 导出到文件
conda env create -f environment.yml

删除环境

conda remove --name flowers --all

在不同的python间切换

conda search python
$ conda create -n py27 python=2.7 anaconda
# 升级Python
$ conda update python

$ conda install python=3.6

管理包 Packages:

conda list -n snowflakes

conda search beautiful-soup

conda install --name bunnies beautiful-soup
#升级本身
conda update anaconda


Python3 新建应用

虚拟环境:

  • 创建:python -m venv .\venv

  • 激活:.\venv\Scripts\activate.bat
    命令行会提示当前虚拟环境的名称

  • 复制Heroku git

git clone https://git.heroku.com/.git
## 有时会提示git.heroku.com登录,这时,用户名:空,密码:Token
## get Token: heroku auth:token

## 本地修改、调试
pip freeze  #显示所有依赖
pip freeze > requirements.txt  #生成requirements.txt文件
pip install -r requirements.txt  #根据requirements.txt生成相同的环境
保证有以下模块:
gunicorn==19.7.1
psycopg2==2.7.3.1

git add .git commit -m "xxx"
git push origin master
  • Heroku数据库初始化
    heroku run bash --app xxx
    python manage.py deploy
    python manage.py initrole

  • Heroku 环境变量:
    FLASK_CONFIG = heroku

  • 本地运行Server
    python manage.py runserver

  • 远程访问:xxx.herokuapp.com
    heroku logs --app xxx

Python2 -> Python3

  • venv安装:
    pip install Flask Flask_sqlalchemy Flask_security Flask_admin Flask_compress Flask_script Flask_Migrate

  • print --> print()

  • try: except Except, e: --> except Except as e:

  • raw_input() --> input()

  • <> --> not is

  • from MyModule import func1 --> from .MyModule import func1
    -- Flask_Security:

# security = Security(datastore=user_datastore)
# security.init_app(app) -->
security = Security()
security.init_app(app, user_datastore)

你可能感兴趣的:(Flask网站轻松部署到免费主机Heroku(3) - 多平台 Multiple Buildpacks, IPython)