使用pyinstaller打包django的方法实现

作者:倔犟的贝壳 时间:2021-04-10 21:58:11 

目录
  • Step 1: 生成spec文件

  • Step 2: 使用pyinstaller 构建可执行文件

虽然django项目我们一般通过部署服务器进行发布,但是也有些情况,可能就是一个小小的数据管理应用,也就内部几个人使用,想直接打包成一个应用,在没有任何python环境的普通的机器上就能运行,内网能访问就可以了。
pyinstaller 就能够用来将python应用打包成可执行文件。

Step 1: 生成spec文件


pyi-makespec -D manage.py

执行成功后,会显示如下信息,表示可以去构建可执行文件了

now run pyinstaller.py to build the executable

在目录下面会生成一个 manage.spec的文件,相当于一个构建可执行文件的配置文件。打开文件,可以看一下,主要有两个地方需要配置:

1.datas=[] 该配置用于配置static文件和templates文件
hiddenimports=[] 把settings里的install_apps 拷贝过来


datas=[('/Users/huanghuan/Documents/python学习/django/loftyha/static','./static')],
            hiddenimports=[ 'django.contrib.admin',
                   'django.contrib.auth',
                   'django.contrib.contenttypes',
                   'django.contrib.sessions',
                   'django.contrib.messages',
                   'django.contrib.staticfiles',
                   'shift',],

Step 2: 使用pyinstaller 构建可执行文件


pyinstaller manage.spec

待上述命令执行完,在目录下面会生成dist和build目录,在dist/manage目录下,有一个可执行文件manage
cd dist/manage目录下,命令行执行manage文件


./manage runserver ip:port --noreload

--noreload参数如果不加,有可能会报错: RuntimeError('Script %s does not exist.' % py_script)

Traceback (most recent call last):
  File "manage.py", line 23, in <module>
  File "manage.py", line 19, in main
  File "django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "django/core/management/commands/runserver.py", line 61, in execute
    super().execute(*args, **options)
  File "django/core/management/base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "django/core/management/commands/runserver.py", line 96, in handle
    self.run(**options)
  File "django/core/management/commands/runserver.py", line 103, in run
    autoreload.run_with_reloader(self.inner_run, **options)
  File "django/utils/autoreload.py", line 640, in run_with_reloader
    exit_code = restart_with_reloader()
  File "PyInstaller/hooks/rthooks/pyi_rth_django.py", line 72, in _restart_with_reloader
  File "django/utils/autoreload.py", line 257, in restart_with_reloader
    args = get_child_arguments()
  File "django/utils/autoreload.py", line 244, in get_child_arguments
    raise RuntimeError('Script %s does not exist.' % py_script)

来源:https://www.jianshu.com/p/8363793b1d41

标签:pyinstaller,打包,django
0
投稿

猜你喜欢

  • python OpenCV学习笔记

    2022-12-19 05:39:11
  • python绘制字符画视频的示例代码

    2023-11-09 16:21:46
  • 解决出现SoapFault (looks like we got no XML document)的问题

    2023-11-19 04:21:01
  • antd通过 filterDropdown 自定义按某天时间搜索功能

    2023-08-25 07:57:05
  • Python调用百度api实现语音识别详解

    2023-03-10 05:10:17
  • 简单实用的图片播放器1.0(Javascript + css )

    2008-07-16 10:39:00
  • 让你知道codepage的重要,关于多语言编码

    2008-01-31 12:04:00
  • Python 内置函数globals()和locals()对比详解

    2021-07-03 18:57:41
  • Python实现有趣的亲戚关系计算器

    2022-02-25 01:11:09
  • 用 Javascript 验证表单(form)中的单选(radio)值

    2024-04-10 10:39:21
  • oracle 更改数据库名的方法

    2009-10-24 18:20:00
  • pd.to_datetime中时间object转换datetime实例

    2021-09-23 19:22:15
  • Vue.js实现一个todo-list的上移下移删除功能

    2024-04-26 17:38:32
  • pytorch 如何把图像数据集进行划分成train,test和val

    2023-12-26 15:28:10
  • python验证码识别的示例代码

    2023-08-04 03:20:24
  • Pytorch如何把Tensor转化成图像可视化

    2021-11-03 20:20:22
  • 模拟实现 Range 的 insertNode() 方法

    2010-11-30 21:39:00
  • 多列复合索引的使用 绕过微软sql server的一个缺陷

    2012-08-21 10:37:36
  • PHP hebrev()函数用法讲解

    2023-06-03 12:49:32
  • python接口自动化之ConfigParser配置文件的使用详解

    2023-09-07 02:56:04
  • asp之家 网络编程 m.aspxhome.com