Django 代码保护

常用的代码保护不外乎下面几种方法:

发行 .pyc 文件
代码混淆
使用 py2exe
使用 Cython

django发布的需要以服务运行,通过其他的几种方法来实现保护,都不太现实。所以发布可以通过cython的方式实现。

1. 安装cython

pip3 install cython

2.在项目目录创建setup.py 编辑内容如下,其中“app/file1.py”是你所要打包的py文件名,这儿需要把app下所有的py文件都添加进来(当然也可以添加部分)

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

python3 setup.py build_ext --inplace 

编译后会生成对应的so文件。

4.删除原始py文件,并且重启服务

python manage.py runserver

 

参考链接:

https://blog.csdn.net/m0_59882674/article/details/118405486

 

ps:

在开发环境尽量不要编译为so文件,否则新添加的代码可能会无法识别。如果提示如下的类似错误:

    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://obaby.org.cn/
* 个性:https://oba.by/
* 本文标题: 《Django 代码保护》
* 本文链接:https://obaby.org.cn/2022/08/10306
* 短链接:https://oba.by/?p=10306
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


You may also like

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注