Как импортировать библиотеку в апплеты gDesklets?

Я хочу использовать некоторые математические функции в апплете gDesklets, однако я не могу import math в сценарии. Я гуглил, но ничего не получил, кроме этого похожего поста, но без ответа.

Я пытался импортировать во время выполнения, но __import__ не работает:

name '__import__' is not defined                                                     
/usr/lib/gdesklets/Displays/Clock/clock.display                                      
    1
    2 #
>   3 math = __import__('math')

и ни один не мог eval() Работа:

name 'eval' is not defined                                                           
/usr/lib/gdesklets/Displays/Clock/clock.display                                      
    1
    2 #
>   3 math = eval('__import__("math")')

1 ответ

Решение

gDesklets безопасен, поэтому функции импорта, eval, exec и т. д. отключены по соображениям безопасности. Чтобы принудительно включить эти функции, вы должны изменить исходный код:

/usr/lib/gdesklets/scripting/Script.py:

  ...
  self.__environment["str"] = str
  self.__environment["sum"] = sum
  ...
+ self.__environment["__import__"] = __import__
+ self.__environment["eval"] = eval
  ...

(+) Добавлены эти две строки, функции __import__ а также eval будет доступен в пользовательских скриптах.

Другие вопросы по тегам