首页 > 解决方案 > Cythonizing 一个 Django 项目

问题描述

我有一个 Django 应用程序,它将很快在客户端服务器上分发,我不想提供对我的源代码的访问。

有人建议我使用 Cython 将我的项目编译成 .so 模块,这将防止对我的源代码进行逆向工程。

我尝试设置 setup.py 文件并运行编译,我能够获得 .so 文件,但问题是每次删除 .py 文件后我都会遇到“未定义符号:_Py_ZeroStruct”的问题从项目中,留下新的 .so 文件并运行我的 Django 项目。

Setup.py 编写如下:

from distutils.core import setup
from Cython.Build import cythonize

setup(ext_modules= cythonize( ['appFolder/*.py', 'MainProjectFolder/*.py'] ) )

所以我问你们是否有人尝试用 Cython 编译他的项目,以及他是如何编写 setup.py 以便能够成功运行 Django 项目的。

标签: pythondjangocythoncythonize

解决方案


  • 提到的错误“未定义符号:_Py_ZeroStruct”是由于使用 Python3 编译模块而不是使用 Python2 运行 Django 项目,因此模块的导入将无法作为共享对象工作。因此无法根据符号识别口译员表。
  • 我还编译了我项目中的每个包,除了包含['settings.py','urls.py','wsgi.py',]的主项目目录。

  • 另一个问题跳到我的屏幕上,说包含我编译的模型模块(旧的 models.py)的应用程序未被识别为正确的应用程序模型:

RuntimeError:模型类..models。未声明显式 app_label 且不在 INSTALLED_APPS 中的应用程序中。

所以我只是在每个类中添加了我的 models.py :

class Meta :
    app_label = "app-name"

我希望这将解决您编译过程中的部分问题。祝你好运。


推荐阅读