没有更新,如何确定Python脚本是可移植的?

Without Updating, How to determine Python script is Portable?

在什么条件下 python 脚本可以被认为是可移植的,假设如下:

也许解决方案是可移植 Python 程序是没有模块依赖性的程序,并且如果目标 Python 程序版本也兼容。但是,(1) 我不知道 Python 脚本开发人员是否可以忍受没有模块依赖性;并且,(2) 我不知道 Python 程序版本兼容性实际上意味着什么(例如,任何 Python 2 脚本的任何 minor/patch 版本是否与任何其他 Python 2脚本版本)?此外,我假设实际上某些模块是 "core" 模块,它们始终存在于 Python 安装中。这是真的?而且,如果核心模块或其他被认为始终存在于 Python 安装中的模块具有不同的版本号,是否会出现不兼容问题。模块版本差异是否会导致脚本不可移植?

问题是:有没有办法通过脚本分析Python脚本以确定它是可移植的,鉴于上述限制?如果没有,有没有办法通过人工检查来做出同样的决定?

有 2 种可能的方式 (AFAIK) 来开发必须稍后在封闭生产环境中 运行 的脚本:

  • 如果您完全了解确切的生产环境,请设置一个克隆生产环境的测试环境。对于无法访问生产系统而只能针对特定平台进行开发的开发团队来说,这很有意义。
  • 如果您希望能够将您的模块分发给潜在的未知客户,您可以应用相反的逻辑:列出脚本的所有要求,让管理团队控制他们是否满足这些要求。

后一种方式以一种微妙的方式更加复杂:由于您通常希望您的脚本可以跨大多数可能的版本移植,因此您必须为您声明支持的不同版本构建(并自动化)一个测试平台。

理论上,可以提前知道脚本的可移植性:如果它永远不会接近任何极端情况,则仅使用标准 Python 模块,并且仅使用许多未更改的功能版本,它很可能可以跨所有这些版本移植。但是这样的要求很难满足,甚至更难控制,因此针对不同版本进行测试是确保脚本真正可移植的唯一万无一失的方法。