utils系列:pyinstaller 打包 以gunicorn启动的Flask

首先是你要打包的Flask服务的py文件

app.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from hello import hallo
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'hello world'


application = app

#以gunicorn 启动的Flask不会走main方法所以下面的可以注释掉

if __name__=="__main__":
    app.run()

上面的Flask不再是程序的入口了,下面的gunicorn才是打包程序的入口

gunicorn.py   里面包含了gunicorn的一些配置项。就不过多解释了

#!/usr/bin/env python3

from gunicorn.app.base import BaseApplication

class Application(BaseApplication):
    def load_config(self):
        s = self.cfg.set
        s('bind', "0.0.0.0:18000")
        s('workers', 1)
        s('timeout', 30)
        s('accesslog', "/opt/test_gun/log/gunicorn_access.log")
        s('errorlog', "/opt/test_gun/log/gunicorn_error.log")
        s('access_log_format', '%(t)s %(h)s "%(r)s" %(s)s %(b)s %(D)s "%(a)s"')

    def load(self):
        from app import application
        return application

if __name__ == '__main__':
    Application().run()

好了 完事具备,只欠东风

可以直接在命令行敲:

pyinstaller -F gunicorn.py --name gun  --hidden-import gunicorn.glogging --hidden-import gunicorn.workers.sync

或者写

bash.sh

pyinstaller -F gunicorn.py --name gunicorn \ 
    --hidden-import=gunicorn.glogging \
    --hidden-import=gunicorn.workers.sync

打包完会生成dist的文件夹 运行文件gunciron就在里面 直接./gunicorn 就可以运行

注意打包前一定要先把程序跑起来,防止有些环境变量没有加载到包里

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyInstaller是一个用于将Python程序打包成可执行文件的工具。当使用PyInstaller打包时,如果你的程序依赖于psycopg2库,但是没有将其包含在打包文件中,可能会导致打包后的可执行文件无法正常运行。 要解决这个问题,你可以尝试以下几种方法: 1. 手动将psycopg2库添加到打包文件中:在使用PyInstaller打包之前,将psycopg2库手动复制到你的项目目录中,并确保在打包时将其包含进去。你可以使用`--add-data`参数来指定要包含的文件或目录。例如: ``` pyinstaller --add-data "path/to/psycopg2;psycopg2" your_script.py ``` 这将把psycopg2库添加到打包文件中,并在运行时将其解压到临时目录中。 2. 使用PyInstaller的hooks机制:PyInstaller提供了hooks机制,可以自动处理某些第三方库的依赖关系。你可以创建一个名为`hook-psycopg2.py`的文件,并在其中指定要处理的库。例如: ```python from PyInstaller.utils.hooks import collect_data_files datas = collect_data_files('psycopg2') ``` 然后,在打包时使用`--additional-hooks-dir`参数指定hooks文件所在的目录: ``` pyinstaller --additional-hooks-dir=path/to/hooks your_script.py ``` 3. 使用虚拟环境:如果你使用了虚拟环境来管理你的Python环境,可以在虚拟环境中安装psycopg2,并在打包时使用虚拟环境的Python解释器进行打包。这样可以确保打包文件中包含了psycopg2库及其依赖项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值