簡體   English   中英

沒有更新,如何確定Python腳本是否可移植?

[英]Without Updating, How to determine Python script is Portable?

在以下條件下,在什么情況下可以將python腳本視為可移植的:

  • 該腳本將在一台主機上開發(例如,CentOS或Ubuntu Linux發行版)
  • 該腳本將被帶到另一個目標主機(例如,CentOS / Ubuntu)
  • 不允許在目標主機上使用pip或任何其他機制來導致更新發生(例如,服務器位於無互聯網訪問的潔凈室中,並且IT策略禁止更新)
  • 不允許將依賴項帶到目標主機(例如,通過諸如PyInstaller,cx_freeze,py2exe或py2app之類的程序: 請參閱相關文章

可能的解決方案是,可移植的Python程序是沒有模塊依賴性的程序,並且目標Python程序版本也兼容。 但是,(1)我不知道Python腳本開發人員可以忍受沒有模塊依賴性的情況; (2)我不知道Python程序版本兼容性的實際含義(例如,任何次要/補丁版本的Python 2腳本是否與任何其他Python 2腳本版本兼容)? 另外,我假設實際上某些模塊是“核心”模塊,這些模塊在Python安裝中始終存在。 這是真的? 而且,如果認為在Python安裝中始終存在的核心模塊或其他模塊具有不同的版本號,則可能會出現不兼容性。 模塊版本差異能否使腳本不可移植?

問題是:在上述限制條件下,是否可以通過腳本分析Python腳本以確定其可移植性? 缺少這一點,是否有任何方法可以通過人工檢查來做出相同的決定?

有兩種可能的方法(AFAIK)開發腳本,這些腳本以后必須在封閉的生產環境中運行:

  • 如果您完全了解確切的生產環境,請設置一個測試環境,該環境是生產環境的副本。 對於無法訪問生產系統但僅針對特定平台進行開發的開發團隊來說,這很有意義。
  • 如果您希望能夠將模塊分發給潛在的未知客戶,則可以采用相反的邏輯:列出腳本的所有要求,並讓管理團隊控制它們是否滿足要求。

后一種方法以一種微妙的方式變得更加復雜:通常您希望腳本可以在大多數可能的版本中移植,因此您必須為聲明要支持的不同版本構建(並自動化)測試平台。

從理論上講,可以預先知道腳本的可移植位置:如果它永遠不會接近任何極端情況,則僅使用標准Python模塊,並且僅使用許多版本中未更改的功能,就很可能將其移植到整個平台上。所有這些版本。 但是,這樣的要求很難滿足甚至難以控制,因此針對不同版本進行測試是確保腳本真正可移植的唯一簡便方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM