Добавьте к: Как я защищаю свою кодовую базу Python, чтобы гости не могли видеть определенные модули, но она все еще работает?

Как защитить свою кодовую базу Python, чтобы гости не могли видеть определенные модули, но она все еще работает?

Мой вопрос - добавление к вопросу, размещенному на странице выше.

Если есть две директории svn; например, src / private и src / public и внутренние пользователи будут иметь как публичные, так и приватные каталоги, и все будет работать нормально.

Публичные пользователи будут иметь только src / public. Можно ли импортировать файл src / private в init.py, даже если у пользователя его нет? Пользователь должен иметь возможность ссылаться на него для разрешения любых функциональных зависимостей в src / private, но не должен иметь возможности просматривать содержимое файлов.

Есть ли другие варианты решения этой проблемы?

2 ответа

Вы всегда можете перенести основные функции в какой-либо модуль C или C++ и распространять только скомпилированную версию модуля.

См. http://docs.python.org/extending/extending.html

Брось это. По существу невозможно держать любопытные глаза. Например, посмотрите на модуль dis:

import dis
def foo(): print 'bar'
dis.dis(foo)

что даст:

  1 0 LOAD_CONST 1 ('bar')
              3 PRINT_ITEM          
              4 PRINT_NEWLINE       
              5 LOAD_CONST 0 (нет)
              8 RETURN_VALUE   

Вуаля - есть строки, которые вы хотели скрыть, просто импортируя свои модули. Существуют и другие модули и сервисы, которые могут довольно неплохо конвертировать такие разборки в читаемый код Python.

Что именно вы пытаетесь достичь? То есть что конкретно вы пытаетесь защитить?

Другие вопросы по тегам