如何确保我的Python 3.6代码与其他小版本兼容?

2024-04-29 11:49:15 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我用python3.6编写python包,那么如何确保代码可以下载并在其他python3环境中运行,比如python3.5?在

是什么使得一些python包(例如Tensorflow)与所有python3次要版本兼容,而其他python包(例如OpenAI Gym)只与python3.5兼容?在

最后:如果我的目标是编写与python3.5和3.6兼容的代码,那么使用python3.5环境会更好吗?在


Tags: 代码版本目标环境tensorflowpython3gymopenai
1条回答
网友
1楼 · 发布于 2024-04-29 11:49:15

圆滑而真实的答案: 用其他版本的Python测试3.6代码。 如果您想看看某个东西在environmentX中是否正确运行,那么在environmentX中实际运行它是无可替代的。在

Tox 是一个Python测试框架,专门用来在您的工作站上完成这项工作。 像这样的东西通常是 continuous integration 框架或服务,可能托管在远程服务器上。在

用需要支持的最早语法编写代码总是一个好主意,但这还不够。 您仍然需要测试以后的版本,因为函数或类可能会发生变化,如果您无意中依赖于它们的行为,甚至错误修复也会破坏代码。在


至于为什么有些包在特定的次要版本下不能工作,最可能的原因是它们使用了稍后介绍的Python语言特性。 (可能是它们的一个依赖项需要语言功能。) 这可能包括语言语法的变化,比如 Python 3.5 ^{} matrix-multiplication operator, 一直到看起来像琐事一样 Python 3.1的 printing commas as thousands-separators, 这仍然足以引发一个例外。在

事实上这比 “支持版本x或更高版本”, 因为Python的历史上有一些空白。 最令人头痛的是python2中的u''Unicode文本语法。 它在Python3.0中被删除。。。 然后 restored in Python 3.3, 在它的缺席之后引起了比预期更多的悲痛。 这一变化意味着任何带有u'Unicode literal'的脚本都可以在python2.7和3.3+下工作,而不能在python3.0、3.1或3.2下工作。在

Python文档很好地跟踪特性的引入时间。 例如,第一件事 ^{} module 告诉你是:

26.1. typing - Support for type hints

New in version 3.5.

对“newin”或“changed-in”进行Ctrl-F式搜索通常会找到所有最重要的更改。在

相关问题 更多 >