如何将python flask应用程序捆绑到独立的可执行文件中。

2024-09-30 16:36:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我的内部用户开发一些python应用程序。我们有一个使用c#和wpf开发的框架,每个用户的系统都有。现在,对于从该框架访问python应用程序的用户来说,一个选项是要求每个用户在系统中安装python,这是不可能的。在Google上做了一些研究之后,我发现了python冷冻库

我能够捆绑或冻结一个tensor流,django-Matlab应用程序,并在我们的框架中托管它,而不需要用户使用pyinstaller安装python。但我找不到合适的冷冻室。在

有没有冰柜供烧瓶使用。我的要求是为我的flask应用程序创建一个独立的exe。我的构建服务器中有python3和python2。在


Tags: django用户框架应用程序flask烧瓶系统选项
1条回答
网友
1楼 · 发布于 2024-09-30 16:36:33

下面描述的方法不使用freezer,适用于python3和在Mac和Linux上工作

为了使用python2,修改shebang和pip工具以使用python2

以下信息的重要部分(除了flask示例和依赖项…)在这篇博客文章中提到Bundling Python files into a stand-alone executable

有关zip应用程序的其他信息在The Python Zip Application Archive Format中解释

假设烧瓶应用如下:

from flask import Flask, redirect, url_for, request
app = Flask(__name__)

@app.route('/')
def root():
   static_page='''
<html>
   <body>
      <form action = "http://localhost:5000/login" method = "post">
         <p>Enter Name:</p>
         <p><input type = "text" name = "nm" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>
   </body>
</html>
'''
   return static_page

@app.route('/success/<name>')
def success(name):
   return 'welcome %s' % name

@app.route('/login',methods = ['POST', 'GET'])
def login():
   if request.method == 'POST':
      user = request.form['nm']
      return redirect(url_for('success',name = user))
   else:
      user = request.args.get('nm')
      return redirect(url_for('success',name = user))


def main():
    app.run()

它将命名为moosh1.py。在

现在正在构建以下文件夹层次结构:

^{pr2}$

其中u main_u.py如下所示:

import sys
import moosh

if __name__ == '__main__':
    print("hello moosh1 - running on python %s.%s" %
        (sys.version_info[0], sys.version_info[1]))
    moosh.main()

moosh/\uu init_u.py如下所示:

from .moosh1 import main

__all__ = ['main']

为了便于移植,将flask依赖项安装到app文件夹中

$ cd app
$ pip3 install flask  target ./
$ cd ..

快拉上

$ cd app
$ zip -r ../app.zip *
$ cd ..

现在添加shebang并使我们的独立应用程序可执行

$ echo '#!/usr/bin/env python3' | cat - app.zip > app
$ chmod +x app

在这里,app是一个独立的python程序,具有所有相关的依赖关系

更复杂的程序将需要更多的调整,可能无法与这种方法开箱即用。在

我发现使用这种方案的最大的程序是youtubedlWhat is this binary file? Where has the code gone?

相关问题 更多 >