Как импортировать библиотеку в апплеты 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
будет доступен в пользовательских скриптах.