簡體   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