【发布时间】:2019-10-09 23:35:21
【问题描述】:
我正在更新代码以兼容 Py2/Py3。一些原始的 Python 2.7 代码使用 PyQt4。我们将在用户系统上增量实施的标准 Python 3.7 安装与 PyQt4 不兼容。
在我的研究中,我发现了许多使 Python 2.7 与 PyQt5 很好地配合的各种复杂且经常令人费解的方法,但这是一个站不住脚的解决方案,因为交叉兼容性更新的全部原因是:
- 系统未更新的用户可以继续使用更新后的模块/包
- 开发人员只需维护一个版本,而不是 Py2 版本和 Py3 版本
我根本没有发现任何有助于使 Python 3.7 与 PyQt4 对话的方法,因此向后兼容的解决方案虽然更可取,但似乎也站不住脚,除非我(希望)弄错了。
另一种选择是修改代码以检查 Python 版本并使用 if/else 或 try/except 语句进行相应的导入。
我想知道对于 PyQt4/5 的交叉兼容编码最好和最简单的方法是什么,以便用户(其中大多数不是开发人员)更新几乎没有困难,并且不需要进行更改以在他们的系统为他们更新之前继续使用更新的程序。
【问题讨论】:
-
Qt4 和 PyQt4 都已过时,不再受支持。 Python2 很快就会出现同样的情况。仍然依赖这些库的任何系统都已经从根本上被破坏了 年。
-
@ekhumoro - 谢谢。这就是我们(最终)进行更新的原因。但是,由于用户众多,我们被要求先对代码进行更改,然后将用户的计算机逐一更新为 Py3。尚未更新的用户将使用与已更新用户相同的代码库,因此开发人员(仍会随着需求的变化对代码进行频繁的更新和修改)只需要维护一个版本 - 所以这一切都需要交叉兼容。这一切都将在几个月内完成并没有实际意义,但现在我想就最好的方法获得专业意见。
标签: python-3.x python-2.7 migration pyqt5 backwards-compatibility