繁体   English   中英

在 setup.py 中,我如何编写将在安装时(在安装计算机上)而不是在构建时运行的 function?

[英]In setup.py, how can I code a function that will run at install time (on the installing computer) NOT at build time?

问:在使用setup.py 创建 python 发行版时,我如何定义 Python 代码将由pip安装时(不是在构建时!)运行并在安装目标机器上运行(不是在构建机器上!)

过去,我一直在 web 上搜索答案,阅读相互矛盾的文档页面,并观看有关 setup.py 的多个视频。 但是在所有这些研究中甚至找不到一个如何指定安装时间任务的工作示例。

有人可以指出一个完整的工作示例吗?

背景:我正在为控制我公司正在制造的专用 USB 外围设备的应用程序编写 Python 代码,将安装它的处理器嵌入/捆绑了外围设备和控制软件。

需要什么:在控制应用程序的安装过程中,我需要安装程序(pip? )在安装目标机器上编写配置文件。 此文件需要包含有关使用从Lib/platform.py导入的函数调用获取的目标机器的机器特定信息

我尝试了什么:到目前为止我尝试过的所有东西要么在构建时在构建机器上运行(当 setup.py 运行并因此为目标机器获取错误信息时),要么它只是安装我想要运行的代码目标,但不运行它。 因此,它需要用户在 pip 安装之后但在尝试运行他们认为刚刚安装的程序之前手动干预,以运行创建安装配置文件的辅助程序。 只有在这 2 个步骤之后,用户才能实际运行已安装(并且现在已正确配置)的应用程序。

源代码:对不起。 我所有尝试将函数放入 setup.py(它只在构建机器上,在构建时运行)的所有失败尝试只会进一步混淆任何读者,并鼓励更多误导性的野鹅追逐毫无意义的老鼠洞。

如果我的用户是经验丰富的 python 开发人员,他们熟悉命令行错误消息,@sinoroc 在之前的评论中提供的链接将是一个有趣的解决方案。

考虑到我的用户几乎不习惯从 App Store 或 Google Play 商店安装软件包,参考的解决方法可能不适合我。

但是考虑到安装时函数被认为是不好的做法,我的解决方法是更改已安装的程序,以便它的第一个操作是在每次程序运行时检查必要的配置文件是否存在。

虽然这种检查在第一次运行后似乎是不必要的,但它只消耗最少的 CPU 资源,并且如果配置文件被意外删除,它会更加可靠。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM