我需要哪个软件包版本?

6 浏览
0 Comments

我需要哪个软件包版本?

我正在开发一个Python软件包,它使用了几个其他的软件包(如numpy、scipy等),我想知道有没有简单的方法来确定我需要每个软件包的最小版本。例如,我需要scipy 0.11,因为我使用的某些函数在那之前不存在。有没有更简单的方法来弄清楚这一点,而不是检查我进行的每个函数调用?那需要花费一定的时间......

我知道我可以只要求当前运行的版本,但我不想让人们不需要更新一堆软件包(如我运行scipy 0.13,但不需要要求那个版本)。

admin 更改状态以发布 2023年5月20日
0
0 Comments

这是另一个SO Q/A(stackoverflow问题和答案)建议的内容:

“对于我写的有外部依赖(第三方库)的python脚本,我会写一个脚本,让用户可以运行它来检查他们的python安装是否安装了适当版本的模块。

对于那些没有定义'版本'属性的模块,你可以检查它包含的接口(类和方法),看看它们是否与它们期望的接口匹配。然后在你实际工作的代码中,假定第三方模块具有你期望的接口。”

运行时检查Python模块的版本

0
0 Comments

没有一种简单的方法可以做到这一点。任何一种自动化工具都必须依赖元数据,告诉它每个函数、类等是在哪个版本的库中首次添加的。(即使在现有的函数中,接口或行为可能已经发生了变化,以你所依赖的方式。)大多数项目都没有这样的信息;那些有的项目,通常只是类似于Python文档的形式(例如,在这里),您需要进行爬取和解析。

一个更好的解决方案是,首先确保您拥有充足的测试覆盖率,然后只需安装 scipy 0.11 并测试它。它能工作吗?太好了,你支持0.11。如果不行,你可以尝试让它工作,或者只是说你需要0.12。

“充足”的意义将取决于您的目标市场。销售给企业客户的商业程序需要在您声称支持的依赖关系上进行更加严格的测试,而面向专家开发人员的开源库则需要进行相对较少的测试。

在某些情况下,您可以通过记录您测试的内容并开放是否支持早期版本来解决问题。0.11可能可行,也可能不可行,如果用户想要尝试它(特别是如果他们想要向您或一些社区资源报告他们的经验,比如维基),鼓励它,但不承诺正式支持它们。

0