我应该更新Python模块吗?

时间:2018-05-26 12:10:53

标签: python

我正在开发一个个人程序,有时我觉得更新程序中使用的Python模块是一个好主意,但我不希望程序因更新模块上的更新功能而停止工作像那样。所以,自从我开始制作程序(1年前)以来,我从未更新过模块并将所有安装程序保存在程序的某个文件夹中,以便能够安装每个模块的正确版本(自动安装)安装程序我在安装时做得更快)。我做对了还是这个坏主意?如果模块的函数,类,...更新,我只是不想在程序中重新编程很多东西。这会发生,还是会一直有效?顺便说一句,我是Python的初学者。

2 个答案:

答案 0 :(得分:3)

如果模块已知漏洞,您一定要考虑更新模块。一个快速谷歌的工具可能会帮助你解决这个问题,结果发现了几个有趣的点击:

通常,开源软件使用semantic versioning(或semver)来提供有关升级到特定版本将如何影响您的一些想法。特别是关于什么" part"要更改的版本取决于更改的backwards-compatible

  

给定版本号MAJOR.MINOR.PATCH,增加:

     
      
  • 当您进行不兼容的API更改时的MAJOR版本,
  •   
  • 以向后兼容的方式添加功能时的MINOR版本,
  •   
  • 当您进行向后兼容的错误修复时的PATCH版本。
  •   
     

预发布和构建元数据的附加标签可作为MAJOR.MINOR.PATCH格式的扩展。

但话说回来,这将始终由模块作者自行决定,所以我建议您开始花时间为代码编写单元测试。这样,您就可以快速查看升级到其中一个模块是否会破坏您的代码。 This应该是一个很好的起点,可以帮助您编写测试。

如果您决定升级,请确保遵循良好做法,确保正确指定正确版本的依赖项,colidyre's answer应该为您提供帮助。

答案 1 :(得分:2)

更新模块当然会导致项目中的代码损坏。该模块当然可以在另一个版本中重写函数或类,删除已弃用的代码等。

一种可能的方法是为项目创建虚拟环境,正如roganjosh已经提出的那样。这是一个有用的链接:http://docs.python-guide.org/en/latest/dev/virtualenvs/

在此虚拟环境中,您可以在需求文件中记录当前版本的模块。这通常是完成的,我认为这也是一个很好的做法。这样做的另一个好处是,只需更改需求文件中的版本号,就可以尝试更新版本是否会破坏您的程序(当然,您当然也可以阅读模块的文档,“破坏更改”或类似内容)。另一个缺点是项目只能在某些时候花费很大的费用进行更新(一次更改太多)。然后,您可以依次更新一个模块,并查看是否需要在此处更改项目代码。

如果你只是想运行你的项目并且没有安全问题,那么修复版本就足够了。就这样。