Flask 代码打包

关键字 flask setuptools mvc blueprint pycharm python2.7.13

背景

基于flask开发了一款产品,届时会部署到客户的环境,为了避免重要的代码泄露,故而对部分代码进行打包封装。在这里blueprint不是必须要使用的,但楼主为了以后做准备,这里也用上了。于是乎,开始一路尝试...总结下分享给大家参考。

开始

step1 pycharm创建flask项目

刚新建ok的项目,都是空的,不多说

step2 项目新建python package

  • 创建frame
  • 创建web
    • web下创建controller
      • calculate下添加calculate.py文件
  • 创建setup.py
    项目目前如图:
Paste_Image.png

step3 coding

controller->_init__.py

from web import app
from web.controller.calculte 

import calculate_blueprint
app.register_blueprint(calculate_blueprint)

controller->calculate.py

from flask import Blueprint

calculate_blueprint = Blueprint('calculate', __name__,url_prefix='/calculate')


@calculate_blueprint.route('/')
def home():
      return 'calculate'

web->_init_.py:

from flask import Flask

app = Flask(__name__)

import controller

Flask-blueprint.py

from web import app


if __name__ == '__main__':name="zsf-test",
    version="1.0.0",
    description="zsf-test",
    author="zsf",
    author_email="zsfbest@gmail.com",
    long_description=textwrap.dedent("""zsf-test"""),
    packages=find_packages(),
    install_requires=[
        "Flask",
        "xmltodict",
    ],
    include_package_data=True,
    zip_safe=False,
)


    app.run(threaded=True)

setup.py

import setuptools
import textwrap
from setuptools import find_packages

if __name__ == "__main__":
    setuptools.setup(
        name="zsf-test",
        version="1.0.0",
        description="zsf-test",
        author="zsf",
        author_email="zsfbest@gmail.com",
        long_description=textwrap.dedent("""zsf-test"""),
        packages=find_packages(),
        install_requires=[
            "Flask",
            "xmltodict",
        ],
        include_package_data=True,
        zip_safe=False,
    )

step 4 代码释义

1.为何要在web下的_init_.py初始化app?

其实像刚创建好项目放在Flask-blueprint初始化也是可以的,这里是为了深度隐藏app初始化的一些内容,在web下的_init_.py 其实还会放请求拦截日志初始化等功能性代码。

2.web下的_init_.py为何先初始化app后在导入controller?

这里是因为controller需要导入web下的app来注册蓝图。反过来说,如果web下的_init.py还没初始化app,controller下的_init.py就无法从web导入app,那直接就导入报错,更别谈注册蓝图。

3.setup.py代码释义

packages=find_packages()这里请务必使用这个函数来找需要打包的packages。最开始看了一篇博客,写法类似于 packages={'web'},后面解压缩了打包后的文件一看,只把我的web第一级目录打包进去了,web下的controller完全没有。

4.controller 下的代码及Flask-blueprint.py代码释义

这里代码都很简单,就是蓝图的简单实例,以及app的run。用manager来跑项目的自行扩展

5.附注

其实不添加setup.py 已经可以运行了,右键Flask-blueprint.py文件,run或debug,然后浏览器访问http://127.0.0.1:5000/calculate/ 会打印 calculate到页面

step 5 开始打包

pycharm下直接alt f12 唤出自带的terminal。执行:
python setup.py sdist
刷新项目结构会发现自动生成了dist,和zsf_test.egg-info文件夹.如图所示:

Paste_Image.png

pip可以直接安装dist下的压缩包,代码:
pip install zsf-test-1.0.0.tar.gz
解压缩看一下,如图:

Paste_Image.png

楼主平时用linux系统开发,用tar -zxvf 解压的该文件,其他系统用户自行解决。可以看到所有的项目代码都已经打包进来了到这里。下面我们实际运用一下,来验证一下这个包是否能正常工作。

step 6 项目认证

1.新建一个virtualenv

创建一个新的virtualenv并安装之前生成好的python包

2.创建一个新的flask项目

创建一个新的flask项目,并使用刚刚创建的virtualenv运行
这两步有难度的可以参考我的另一篇文章Python virtualenv
目前项目如图:

Paste_Image.png
3.coding
from web import app

if __name__ == '__main__':
    app.run(port=1234)#为了和上个项目做区分,特地换个端口
4.运行setuptoolsTest.py

浏览器访问http://127.0.0.1:1234/calculate/ 出现如图效果

Paste_Image.png

step 7 结束

    新项目只导入app,并启动,其余代码都在python packages里面。至此,一切都完成。届时部署到客户环境时,对于代码起到一定程度的保护性(遇到python大神另说了)。
新年了,项目要上线,每天早上八点到公司写的这篇文章,有不清晰或者有漏洞的,请大家不吝赐教,本人积极改正。也欢迎各路朋友关注本人,陆续更新一点项目使用的心得给大家。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容