Как я могу заблокировать модуль Python stdlib от импорта? - PullRequest
2 голосов
/ 21 октября 2011

В моем скрипте Python я хочу запретить импорт определенных модулей stdlib, таких как os и sys. Как мне это сделать?

Ответы [ 2 ]

5 голосов
/ 21 октября 2011

Очень буквально, и если вы просто хотите «заглушить их, чтобы они не загружались прямым импортом», , а не «сделать их не загружаемыми ненадежным кодом», то:

import sys
sys.modules['os'] = None
sys.modules['system'] = None

Конечно, нет модуля system, поэтому вы могли иметь в виду sys, в этом случае у вас проблемы.

Если вы пытаетесь помешать ненадежному коду сделать плохие вещи, взгляните на http://wiki.python.org/moin/SandboxedPython и поймите, что вы ищете что-то не сразу выполнимое.

1 голос
/ 21 октября 2011

Не импортируйте их. В целом, не выполняйте ненадежный код внутри вашего модуля. eval() выглядит элегантно, но почти наверняка не твой друг.

Если вы намереваетесь создать внешний код для песочницы, посмотрите статью SandboxedPython на вики-сайте Python. Пока вы не прочитали (и не поняли) все, пожалуйста, не пытайтесь.

...