Python 冻结:一般流程和用户输入?

Python Freezing: general process and user input?

我对冻结和打包代码的过程比较陌生,我对冻结项目的担忧之一是如何处理用户输入。我在一个处理物理问题的项目中有一个主文件,输入区域如下:

#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 或我发现的任何类似的东西打包文件后,有没有办法像上面那样让用户输入,或者我是否需要在打包代码之前为此创建一个用户界面?谢谢!

一旦您的代码被冻结,代码的内容将无法再更改(无需返回到原始代码),但您可以使用多种策略:

  • 一次提示用户缺少参数 - 使程序难以使用
  • 允许用户在命令行上提供参数,例如:使用 argparse - 可以批量调用你的代码 - 可以与上面的
  • 允许用户提供一个包含参数的文件,这可以是每行一个,一行逗号分隔的参数,每行调用一次您的函数或许多其他选项,如 xml,ini 格式等 - 更好的批量调用 - 这可以与以上两者结合,你可以有一个 --file 选项
  • 以上所有可能是最佳选择
  • 使用 Tinker、QT 或 wxPython 为参数提供 GUI 输入通常大多数工作仍然可以与上述组合
  • 可以实现类似架构的插件来提供默认代码,但也允许用户提供替代代码,但存在安全问题。
  • 您可以将上述代码保留在冻结的应用程序之外,但将其包含为用户可以修改的 .py 文件注意 用户将拥有 python 的全部功能,包括您的应用程序包含的任何可以进行恶意更改的库
  • 您可以编写自己的小语言,以允许用户提供所需的项目,例如使用通过使用 TextX or just about any of the tools listed here 然后允许用户提供输入文件。

从字里行间看,用户似乎指定了一些对象实例,然后创建并处理这些对象实例,因此您可以从命令行参数或文件中解析 =38=], 将是要走的路。然后解析(并验证)输入,并为每个对象创建一个实例并将其添加到列表中。然后一旦输入被消耗处理列表中的所有实例。