问题描述
问::在使用 setup.py创建python发行版时,如何定义 pip 在安装时间 (不在构建时!),并且在安装目标计算机上运行 (不在构建机上!)
过去我一直在搜索网络以寻找答案,阅读矛盾的文档页面以及观看有关setup.py的多个视频。但是在所有这些研究中,甚至找不到一个可以如何指定安装时间任务的有效示例。
有人可以给我指出一个完整的工作示例吗?
背景:我正在为控制我公司制造的专用USB外设的应用程序编写Python代码,将要安装该处理器的处理器已与外设和控制软件嵌入式/捆绑在一起。
需要什么:在控制应用程序的安装中,我需要安装程序(pip?)在安装目标计算机上写入配置文件。 。该文件需要包含有关通过调用从 Lib / platform.py导入的函数获取的目标计算机的计算机特定信息。
我尝试过的事情:到目前为止,我尝试过的所有操作都在构建时在构建计算机上运行(当setup.py运行并因此为目标计算机获取错误信息时),或者它只会在目标上安装我要运行的代码,而不会运行它。因此,在pip安装后,需要由用户手动干预,但是在尝试运行他们认为自己刚刚安装的程序之前,必须运行创建安装配置文件的辅助程序。只有经过这两个步骤,用户才能实际运行已安装(现已正确配置)的应用程序。
源代码:很抱歉。我将函数放入setup.py(仅在 build 机器上运行,且在 build 上运行)的所有失败尝试只会进一步混淆任何读者并鼓励更多误导性的野鹅追逐毫无意义的老鼠洞。
解决方法
如果我的用户是精通Python的开发人员,他们熟悉命令行错误消息,那么@sinoroc在前面的评论中提供的链接将是一个有趣的解决方案。
鉴于我的用户很难从App Store或Google Play商店安装软件包,所引用的解决方法可能不适合我。
但是考虑到安装时间功能被认为是不好的做法,我的解决方法是更改已安装的程序,以便其第一个操作是每次 检查必要的配置文件的存在该程序运行。
虽然在第一次运行后似乎不需要进行此检查,但它仅消耗最少的CPU资源,并且如果不小心删除了配置文件,则将变得更加强大。