加密Python项目代码之把Django或Flask项目打包成exe
2021/11/7 20:12:00
本文主要是介绍加密Python项目代码之把Django或Flask项目打包成exe,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一 前提
# Python是解释型语言,我们写的Flask或Django项目如果部署,源码可能会泄露,因此我们可以把项目打包成exe,来保护源码 # 需要用到工具 -pyinstaller:把python项目打包成不同平台的可执行文件 -nsis:NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序,它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,NSIS 是通过它的脚本语言来描述安装程序的行为和逻辑的
二 打包Flask项目
2.1 项目源码
# 项目源代码放在百度网盘上,如果需要自取,或者自己写个Flask项目亦可 # 百度网盘地址 链接: https://pan.baidu.com/s/1eJ029dk6ENCJyPJjMLN6vA 提取码: a2qq # 目录结构如下
2.2 下载pyinstaller
pip3 install pyinstaller # 参数介绍
可选参数 | 示例 | 说明 |
---|---|---|
-F |
pyinstaller -F demo.py |
只在dist文件夹中生成一个程序demo.exe文件,适用于一个模块没有多依赖.py文件 |
-D |
pyinstaller -D demo.py |
默认选项,除了主程序demo.exe外,还会在在dist文件夹中生成很多依赖文件,推荐使用这个 |
-c |
pyinstaller -c demo.py |
默认选项,只对windows有效,使用控制台 |
-w |
pyinstaller -w demo.py |
只对windows有效,不使用控制台 |
-p |
pyinstaller -p D:\project\demo.py |
设置导入路径 |
-i |
pyinstaller -i D:\demo.ico demo.py |
给生成的demo.exe文件设置一个自定义的图标 |
2.3 进入到项目路径下,执行
# run.py 是flask项目的执行文件,app.run所在py文件 pyinstaller -D run.py # 可以看到项目路径下有 -build文件夹 -dist文件夹:重要,下有run文件夹(py文件名字),有个run.exe(py文件的名字) -run.spec # 把pro_flask这个文件夹,拷贝到dist下的run文件夹 -因为flask项目有静态文件和html文件,如果不拷贝过去,静态文件和html文件会找不到 -我们为了隐藏代码,可以把所有python的代码都删除,只留static和templates文件夹
2.4 运行exe,测试
# 今日到dist/run文件夹下,双击 run.exe,启动 如下图 # 浏览器访问 如下图
2.5 使用nsis把文件夹打包成windows的安装包
2.5.1 下载安装nsis
nsis:NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序,它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,NSIS 是通过它的脚本语言来描述安装程序的行为和逻辑的 利用 nsis 把刚刚的dist的run文件夹打包成windows的安装包 # nsis下载地址 https://nsis.sourceforge.io/Download # 一路下一步安装,打开 如下图
2.5.2 把dist文件夹下的run文件夹压缩成zip
2.5.3 使用nsis把压缩包,做成windows安装文件
2.6 安装刚刚打包的安装包测试
# 双击 run ,打开,一路下一步
三 打包Django项目
3.1 准备django项目
# 百度网盘下载,或自己创建一个即可 链接: https://pan.baidu.com/s/1p77wF1BaJzo7baCJIl-Z1g 提取码: 51dn # 在django项目的配置文件中修改settings.py STATIC_ROOT = os.path.join(BASE_DIR, 'static', 'static_root') # 修改urls.py from django.conf.urls import static from django.conf import settings urlpatterns = [ path('admin/', admin.site.urls), path('', views.index), ] urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) # 执行 静态文件收集 python manage.py collectstatic # 会把所有静态文件收集到项目的static路径下的static_root文件夹下
3.2 使用 pyinstaller打包
# 进入到项目路径下 pyinstaller -D manage.py # 生成dist文件夹,build文件夹和manage.spec文件
3.3 执行打包成的exe
# 此时在项目路径下会生成dist文件夹,内部manage文件夹下有manage.exe manage.exe runserver # 运行服务是会提示No module named XXX 执行会报错,提升缺少模块,我的提示少app01.apps ######### 这是因为Django有些module不会自动收集,需要手动添加 解决方法:在manage.spec文件中修改hiddenimports=[]为hiddenimports=['app01.apps','users.apps',],提示缺少什么module就在此处添加什么。 ######### 修改manage.spec,hiddenimports=['app01.apps',] # 再重新编译一下,运行 pyinstaller manage.spec
3.4 把templates和static文件夹copy到dist/manage文件夹下
3.5 运行项目
manage.exe runserver 0.0.0.0:8080
3.6 注意一些坑
# 问题1:运行服务提示No module named XXX 这是因为Django有些module不会自动收集,需要手动添加 解决方法:在manage.spec文件中修改hiddenimports=[]为hiddenimports=['users','users.apps',],提示缺少什么module就在此处添加什么。 # 问题2:打开网页出现TemplateDoesNotExist 错误 解决方法:把项目中的模板文件templates拷贝到dist下的manage文件夹,刷新页面即可。 # 问题3:静态文件找不到 1、首先在项目中的settings文件中添加如下代码,其中static是项目中的静态文件位置,static_root是static下的一个空文件夹,然后执行python manage.py collectstatic命令将静态文件收录到static_root中 STATIC_ROOT = os.path.join(BASE_DIR, 'static', 'static_root') 2、然后在urls.py中添加如下代码: from django.conf.urls import static from project_1 import settings urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
四 本笔记所有代码
链接: https://pan.baidu.com/s/1gLbkU5F0MVEIzaDjTSLV6Q 提取码: 3uqr
这篇关于加密Python项目代码之把Django或Flask项目打包成exe的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门