Добавление новой функции, не работающей в pysandbox

#python #pysandbox

#python #pysandbox

Вопрос:

Я использую pysandbox для запуска кода Python в среде изолированной среды. Я запустил ее, но я хочу, чтобы она поддерживала модуль python datetime . Согласно документации, я добавил ‘datetime’ в конфигурацию следующим образом,

 sandbox = SandboxConfig('datetime', cpython_restricted=False)
  

но если я запускаю код, я все равно получаю ошибку,

‘глобальное имя datetime не определено’

Комментарии:

1. У меня это работает с версией pysandbox 1.5.1. Какую версию вы используете?

2. Я использую ту же версию 1.5.1. Вы выполняли какие-либо дополнительные настройки, кроме добавления ‘datetime’ в конфигурацию? В моем случае мне пришлось изменить SandboxConfig, чтобы включить ‘traceback’ для pysandbox, чтобы получить путь к модулю ‘datetime’. У меня все еще не работает.

3. Все, что я сделал, это создал новый virtualenv, запустил pip install pysandbox , а затем сделал from sandbox import SandboxConfig; sandbox = SandboxConfig('datetime', cpython_restricted=False) . Я использую Python 2.7. Это работает для вас?

4. Спасибо! Я глубоко погрузился в эту проблему и выяснил, что мой глобальный импорт недоступен ни в одной функции. import datetime def get_today(): print(datetime.date.today()) выдает ошибку «Дата-время глобального имени не определено «. Но если я передам datetime в качестве аргумента функции, только тогда это сработает.

Ответ №1:

Существует некоторая проблема с pysandbox. Похоже, вы передаете какой-то параметр изолированной функции через locals переменную. В этом случае импорт не добавляется в глобальное пространство имен.

Просто напишите global datetime сразу после импорта, и это сработает. В противном случае вы также можете передать ее в качестве параметра функции.