常用的代码保护不外乎下面几种方法:
代码语言:javascript复制发行 .pyc 文件
代码混淆
使用 py2exe
使用 Cython
django发布的需要以服务运行,通过其他的几种方法来实现保护,都不太现实。所以发布可以通过cython的方式实现。
- 安装cython
pip3 install cython
2.在项目目录创建setup.py 编辑内容如下,其中“app/file1.py”是你所要打包的py文件名,这儿需要把app下所有的py文件都添加进来(当然也可以添加部分)
代码语言:javascript复制from distutils.core import setup
from Cython.Build import cythonize
fileSet = set()
fileSet.add("UserBase/models.py")
fileSet.add("UserBase/views.py")
setup(
ext_modules=cythonize(fileSet)
)
3.运行setup.py
代码语言:javascript复制python3 setup.py build_ext --inplace
编译后会生成对应的so文件。
4.删除原始py文件,并且重启服务
代码语言:javascript复制python manage.py runserver
参考链接:
https://blog.csdn.net/m0_59882674/article/details/118405486
ps:
在开发环境尽量不要编译为so文件,否则新添加的代码可能会无法识别。如果提示如下的类似错误:
代码语言:javascript复制 return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/Users/zhongming/PycharmProjects/djangoProject/GreenPower/UserBase/urls.py", line 18, in <module>
path(r'app-menu-data/<int:pk>/', views.appmenu_detail),
AttributeError: module 'UserBase.views' has no attribute 'appmenu_detail's
删除掉编译好的so文件即可。
☆文章版权声明☆
* 网站名称:obaby@mars
* 网址:https://h4ck.org.cn/
* 本文标题: 《Django 代码保护》
* 本文链接:https://h4ck.org.cn/2022/08/django-代码保护/
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。
分享文章:
相关文章:
- Django 限制访问频率
- ImportError: DLL load failed while importing win32console【pywin32】
- ubuntu uwsgi No module named ‘django’
- Django REST framework foreignkey 序列化
- Django APScheduler uwsgi 定时任务重复运行
- django 主动抛出 403 异常
- 再谈《Django 限制访问频率》
- ngix uwsgi django 以及阿里云rds数据库数据导入
- Django input value值被截断
- Django admin Foreignkey ManyToMany list_display展示