如果升级Ubuntu,是否应该更改Python代码?


11

我拥有多年来使用Python 3开发的软件。直到今天,我一直在使用Ubuntu Desktop 11.04,但现在我想移至更高版本的Ubuntu。

我是否必须继续使用Ubuntu 11.04,以便由于更高版本的Ubuntu中的新更改而不必更改软件的部分源代码?

最近的Ubuntu版本不会以任何方式影响我的软件吗?


18
对我而言,这确实是不费吹灰之力:如果您的软件有任何损坏,请更新至14.04:修复它。这是避免软件腐烂的绝佳练习。您可能会发现的问题类型是依赖关系。您可以预先在virtualenv中进行测试。
don.joey 2014年

6
@begueradj我不想最小化它将花费的精力,也不想使您的理由无效。只是:要么投入您的精力,要么您的软件真的不会持续很长时间。您可以升级到12.04,但保持EOL版本存在问题。而且问题不会自己消失...
don.joey 2014年

5
@begueradj-请编辑您的问题,并提供有关软件的一些详细信息。描述它的作用。描述您使用的是什么工具包(例如GTK?QT?)。描述它所依赖的第三方软件(例如特定版本的firefox?Webkit?)。描述构建软件的软件依赖关系。没有以上信息,您将无法获得问题的具体答案。您将获得当前的一般答案。
fossfreedom

3
一年半之前11.04达到了使用寿命。.您应该早就升级了。
psusi 2014年

Answers:


3

根据您的评论,您成功在VM上测试了软件,这是个好消息。

但是,作为应用程序开发人员,您必须准备使您的代码适应最新版本,否则它将很快被放弃。

现在,要确保它可以继续与Ubuntu的新版本一起使用,我强烈建议您将其作为软件包进行维护,并为您的应用程序提供完整的测试套件,并在软件包的构建过程中对其进行调用(例如,通过setup.py test在您的debian/rules override_dh_auto_test部分中进行调用))。

您可以使用bzr-builder 配方在ppa中轻松设置每日构建的软件包。这样,您将收到由新软件版本或依赖项损坏导致的所有构建失败的通知。

通常,在正式发布公告后的几天内,就会开放新版本供开发。看一下我们的ppa页面,Utopic现在是我们要为其构建的发行版系列的一部分:

在此处输入图片说明


3
为什么您在同一问题上有2个答案?另外,autopkgtest也不行。与其他问题相比,这实际上如何更好或更精确地回答了这个问题?
dobey 2014年

我在赏金期间发布了第二个答案。这次重点关注如何防止希望带来OP真正期望的更新问题(由于他的评论,我知道他的应用程序可以在14.04上正常工作)
Sylvain Pineau 2014年

我建议您再问一个问题,将答案放在这里。顺便说一句,我会修复autopgktest部分。@dobey是正确的,它不能那样工作。
Braiam

@dobey autopkgtest已修复/已从我的答案中删除。
西尔万·皮诺

@Braiam autopkgtest已修复/已从我的答案中删除
Sylvain Pineau

13

不,您不应该停留在11.04。自2012年10月起,它就已经终止支持。如果您需要任何支持,则至少需要升级到12.04(将再获得三年支持)。

而且,即使是较新版本的Ubuntu,默认情况下也包括Python 3.x,目的是从默认安装中完全删除Python2.x。

可能会在较新版本的Python 3.x下运行代码时遇到问题,但通常应该没有问题。无论您使用的是哪个版本的Ubuntu,作为开发人员,您都应准备好应对任何此类问题。您正在使用的任何库,或者Python本身,都可能存在一个错误,您的代码在行为上取决于该错误,如果该错误已得到修复,则可能导致程序的行为与以前的预期有所不同。


11

很难给出明确的答案,而无需描述您的应用程序。由于您使用的是Python3,至少您不受Python2.x分支的限制(不会有Python 2.8)。

现在,对于Python3,可能会出现一些警告,可能会不适用于您的应用程序,因为不推荐使用GLib / GObject / GIO / GTK +来访问GLib / GObject / GIO / GTK +的最佳方法是使用Python GObject Introspection(又名PyGI)。

最后,不同的python3版本之间仍然存在一些细微的差异(例如Argparse在python 3.2和3.3中的行为并不完全相同。

您可以尝试的一件事是引导14.04 VM并使用python3.4测试代码。


我不会更改Python版本(这是不可能的),我更担心新的Ubuntu版本会如何影响软件的源代码。

您正式支持哪个版本3.2?
西尔文·皮瑙

我使用的是3.1.3版本

我建议您使用python3.2(启动12.04 VM和sudo apt-get install python3)测试您的应用程序。您还可以查看python3.2 的发行说明,但据我所知python3.2只是对3.1.x分支的大量改进(argparse是其中之一)
Sylvain Pineau 2014年

1
对于python3程序,升级的python版本只是提供了更有效的方式来执行复杂的任务。例如,Python3.4引入了asyncio,它将使我摆脱真正复杂的glib mainloop /线程问题。我记下有关argparse的信息,因为我被困在最近的更改中,但这并不重要。因此,请再次使用最新版本测试软件(3.2,然后是14.04的3.4),但是像其他答案一样,您不应该遇到重大问题
Sylvain Pineau

2

它取决于您的代码。如果您的代码使用了不受支持的库,则无法轻松迁移到较新版本的操作系统,但是在大多数情况下都不会发生问题。


您能解释一下Python库如何依赖给定的Ubuntu版本吗?

@begueradj不会,但是,如果您使用的是不再维护的Python库,则有时可能已从Ubuntu存档中删除了它,因此在较新的版本中不可用。您的代码将失败。当然,您可以从Ubuntu的较旧版本或从源代码安装库软件包来解决此问题,尽管您不会获得任何更新。或者您可以修复代码以使用其他库,或者编写自己的代码来执行相同的功能。
dobey 2014年

正如@dobey所说,某些库已不再维护,或者其较新版本破坏了向后兼容性。过去,升级到较新版本的Ubuntu时,Turbogears出现了一些问题。
2014年

0

Ubuntu 14.04具有python3软件包,所以这不是问题。apt-cache search python3将向您展示。除此之外,您还必须阅读11.04至“更高版本”之间每个Ubuntu版本的发行说明,并搜索将破坏您的应用程序的更改。对您的开发一无所知需要我大喊YMMV,但是我的猜测是您不会遇到无法解决的问题。


0

如果需要在Ubuntu 14.04上运行旧版本的Python,请启用Deadsnakes存储库。它具有适用于Ubuntu 14.04的Python版本2.3、2.4、2.5、2.6、3.1、3.2、3.3。如果您的应用程序是纯Python代码,并且不依赖于其他进程的行为,那么它应该可以在旧的解释器上正常运行。


0

另一个答案是,如果您有任何问题,可以使用虚拟环境,也可以在14.04中的11.04上使用相同版本的python(下载并构建它)。


我当然可以在VM上进行测试(我做到了),我的软件目前运行良好……但是我不知道它是否会因为新的Ubuntu版本而在以后出错。

1
因为Ubuntu 14.04是LTS版本,并且基于其理念,所以它们不会更改版本(主要版本上的炸弹)和配置,我想您一定不会有任何问题。
海洋
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.