Добавьте файл hook с именем hook-encodings.py
в C:\Python\Lib\site-packages\PyInstaller\hooks
и добавьте следующую строку кода для сбора модуля кодирования в файле hook
from PyInstaller.utils.hooks import collect_submodules
hiddenimports = collect_submodules('encodings')
, это может сработать, этот ответ может помочь вам Ошибка Pyinstaller для проекта Djnago & quot; ИмпортError: Нет модуля с именем 'django.contrib.admin.apps' & quot;
Вы видели https://ncalc.codeplex.com/ и https://github.com/sheetsync/NCalc ?
Он расширяемый, быстрый (например, имеет собственный кеш) позволяет вам предоставлять пользовательские функции и переменные во время выполнения, обрабатывая события EvaluateFunction / EvaluateParameter. Примеры выражений, которые он может анализировать:
Expression e = new Expression("Round(Pow(Pi, 2) + Pow([Pi2], 2) + X, 2)");
e.Parameters["Pi2"] = new Expression("Pi * Pi");
e.Parameters["X"] = 10;
e.EvaluateParameter += delegate(string name, ParameterArgs args)
{
if (name == "Pi")
args.Result = 3.14;
};
Debug.Assert(117.07 == e.Evaluate());
Он также обрабатывает unicode & amp; многие типы данных изначально. Он поставляется с файлом antler, если вы хотите изменить грамматик. Существует также вилка, которая поддерживает MEF для загрузки новых функций.
Он также поддерживает логические операторы, строки даты / времени и операторы if.
Я полностью понимаю, как поздно этот ответ, однако, я хотел бы бросить свое решение, потому что я считаю, что он может добавить больше, чем принятый ответ на использование NCalc , если кто-то захочет использовать выражения в нескольких платформ.
Я создал парсер для C # с планами также реализовать его для Java и Swift в течение следующих нескольких месяцев. Это означает, что вы можете оценивать выражения на нескольких платформах без необходимости настройки на платформе.
Выразительный инструмент, и он доступен по адресу: GitHub или Nuget .
На сайте имеется достаточное количество документации, но для предотвращения гниения ссылки здесь приводится пример того, как его использовать:
Поддержка переменных
var expression = new Expression("1 * [variable]");
var result = expression.Evaluate(new Dictionary<string, object> { ["variable"] = 2);
Функции
var expression = new Expression("sum(1,2,3,4)");
var result = expression.Evaluate();
Он был разработан так, чтобы максимально соответствовать NCalc, но он добавил поддержку таких вещей, как ключевое слово «null».
Как насчет оценщика экспресс-оценки с быстрым весом ? Он позволяет вам устанавливать переменные и поддерживает логические операторы .
Если вам нужно что-то более сильное и у вас есть время, вы также можете создать свой собственный язык выражения с помощью Ирония .
самореклама здесь я написал генератор синтаксического генератора для c # https://github.com/b3b00/csly , вы можете найти пример parseras выражения на моем github. вам может потребоваться настроить его в соответствии с вашими потребностями
Интерпретатор Hisystems поддерживает пользовательские функции, операторы и литералы, является легким чистым портативным кодом c #. В настоящее время он работает на iOS через MonoTouch и должен работать в любой другой среде Mono, а также в окнах. Бесплатно для коммерческого использования. Доступно в GitHub в https://github.com/hisystems/Interpreter .