Добавьте к: Как я защищаю свою кодовую базу Python, чтобы гости не могли видеть определенные модули, но она все еще работает?
Мой вопрос - добавление к вопросу, размещенному на странице выше.
Если есть две директории svn; например, src / private и src / public и внутренние пользователи будут иметь как публичные, так и приватные каталоги, и все будет работать нормально.
Публичные пользователи будут иметь только src / public. Можно ли импортировать файл src / private в init.py, даже если у пользователя его нет? Пользователь должен иметь возможность ссылаться на него для разрешения любых функциональных зависимостей в src / private, но не должен иметь возможности просматривать содержимое файлов.
Есть ли другие варианты решения этой проблемы?
2 ответа
Вы всегда можете перенести основные функции в какой-либо модуль C или C++ и распространять только скомпилированную версию модуля.
Брось это. По существу невозможно держать любопытные глаза. Например, посмотрите на модуль 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.
Что именно вы пытаетесь достичь? То есть что конкретно вы пытаетесь защитить?