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

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 14 января 2012

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

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

2 голосов
/ 14 января 2012

Откажись. По существу невозможно держать любопытные глаза. Например, посмотрите на модуль 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 (None)
              8 RETURN_VALUE   

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...