python - 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 项目的。
解决方案
- 提到的错误“未定义符号:_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"
我希望这将解决您编译过程中的部分问题。祝你好运。
推荐阅读
- android - 在 ViewPager 片段中的 onPause() 不起作用
- python - starpy 点击通话 不通话
- r - 以优雅的方式将百分比(每行)列添加到 R data.frame
- angular - 使用服务在组件之间共享数据
- python-3.x - 缩短 Python3 中 Stack 的使用时间
- angular - 监听多个路由器
- android - 语音识别无法从片段中工作
- javascript - Webpack 从目录导入 React 组件
- google-tag-manager - 触发器未在 GTM 上触发
- openstack - 未能在 OpenStack 中发现可用身份