#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
сразу после импорта, и это сработает. В противном случае вы также можете передать ее в качестве параметра функции.