Cythonizing проект Django - PullRequest
       11

Cythonizing проект Django

0 голосов
/ 14 апреля 2019

У меня есть приложение Django, которое скоро будет распространено на клиентском сервере, и я не хочу предоставлять доступ к своему исходному коду.

Кто-то предложил мне использовать Cython для компиляции моего проекта в модули .so, что предотвратит обратный инжиниринг моего исходного кода.

Я попытался настроить файлы setup.pyи запустить компиляцию, и я смог получить файлы .so, но проблема в том, что каждый раз, когда я сталкивался с проблемой «неопределенного символа: _Py_ZeroStruct» после удаления файлов .py из проекта, оставляя новый .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.

1 Ответ

1 голос
/ 14 апреля 2019
  • Ошибка, указанная как «неопределенный символ: _Py_ZeroStruct», связана с компиляцией модулей с Python3, а не с выполнением проекта Django с Python2, поэтому импорт модулей не будет работать, так как общие объекты не будут распознаваться на основе на таблице символов переводчика.
  • Также я скомпилировал каждый пакет в моем проекте, кроме основного каталога проекта, который содержит ['settings.py', 'urls.py', 'wsgi.py',].

  • Другая проблема возникла на моем экране, сказав, что приложение, содержащее мои модули скомпилированных моделей (old models.py), не распознается как правильная модель приложения:

 RuntimeError: Model class ..models. doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

Так что я просто добавил в свой models.py в каждом классе:

class Meta :
    app_label = "app-name"

Я надеюсь, что это решит часть проблем во время вашей компиляции. Удачи.

...