Замораживание Python: общий процесс и пользовательский ввод?
Я относительно новичок в процессе замораживания и упаковки кода, и одна из моих проблем с замораживанием моего проекта заключается в том, как я буду реагировать на ввод пользователя. У меня есть основной файл в проекте, который имеет дело с физикой с такой областью ввода:
#Coil(center, radius, normal vector, current, scene, loops(default=1), pitch(default=1))
#Example coil:
r = Coil(vector(0, 0, 0), 10, vector(0, 1, 1), 10, d, 10, 0.5)
Итак, после того, как я упакую файл с py2exe или чем-то похожим, я найду, есть ли способ ввести пользовательский ввод, как описано выше, или мне нужно создать пользовательский интерфейс для этого перед упаковкой кода? Спасибо!
1 ответ
Как только ваш код заморожен, содержимое кода больше не может быть изменено (без возврата к исходному коду), но есть ряд стратегий, которые вы можете использовать:
- Запрашивать у пользователя пропущенные параметры по одному - затрудняет использование программы
- Разрешить пользователю указывать параметры в командной строке, например: использование argparse - включает пакетный вызов вашего кода - может сочетаться с приведенным выше
- Разрешить пользователю предоставлять файл, содержащий параметры, это может быть по одному на строку, строку параметров, разделенных запятыми, и вызывать вашу функцию один раз на строку или множество других параметров, таких как xml, ini format и т. Д. - лучше пакетный вызов - это может сочетаться с обоими из вышеупомянутых, и вы могли бы иметь
--file
вариант - Все вышеперечисленное возможно лучший вариант
- Обеспечьте ввод GUI для параметров, используя Tinker, QT или wxPython, часто большую часть работы все еще можно комбинировать с приведенным выше.
- Вы можете реализовать плагин, подобный архитектуре, для предоставления кода по умолчанию, но также позволяющий пользователю предоставлять альтернативный код, но есть проблемы с безопасностью.
- Вы можете исключить приведенный выше код из замороженного приложения, но включить его в виде файла.py, который пользователь может изменить, остерегаясь того, что у пользователя будут все возможности Python, включая любые библиотеки, которые входит в ваше приложение, которые могут создавать для злонамеренных изменений.
- Вы можете написать свой собственный маленький язык, чтобы позволить пользователю предоставлять необходимые элементы, используя, например, TextX или любой из перечисленных здесь инструментов, а затем разрешать пользователю вводить входные файлы.
Читая между строк, кажется, что пользователь указывает количество экземпляров объекта, которые затем создаются и обрабатываются, поэтому можно использовать небольшой псевдоязык, который вы анализируете, либо из параметров командной строки, либо из файла. Затем вы анализируете (и проверяете) входные данные и для каждого объекта создаете экземпляр и добавляете его в список. Затем, когда входные данные были использованы, обработайте все экземпляры в списке.