繁体   English   中英

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

[英]How do I make sure my Python 3.6 code is compatible with other minor versions?

如果我在python 3.6中编写python软件包,那么如何确保我的代码可以下载并在其他python 3环境(如python 3.5)中运行?

是什么使某些python软件包(例如Tensorflow )与所有python 3次要版本兼容,而其他python软件包(例如OpenAI Gym )仅与Python 3.5兼容?

最后:如果我的目标是编写与Python 3.5和3.6兼容的代码,那么仅使用python 3.5环境会更好吗?

glib-but-true答案: 使用其他版本的Python测试您的3.6代码。 如果您想查看某些东西是否在环境X中正确运行,那么没有替代品可以在环境X中实际运行它。

Tox是一个Python测试框架,旨在在您的工作站上完全做到这一点。 诸如此类的东西通常是一个较大的持续集成框架或服务的一部分,该框架或服务可能托管在远程服务器上。

用您需要支持的最早语法编写代码始终是一个好主意,但这还不够。 您仍然需要测试更高版本,因为函数或类可以更改,并且如果不经意地依赖于它们的行为,甚至错误修复也可以破坏您的代码。


至于为什么某些软件包不能在特定的次要版本下运行的原因,最可能的原因是它们使用了稍后介绍的Python语言功能 (可能是需要语言功能的依赖项之一。)这可能包括语言语法更改,例如Python 3.5的@ matrix-multiplication运算符 ,一直到看起来像琐事一样像Python 3.1的印刷逗号(千位分隔符)一样 ,这仍然足以引发例外。

实际上,它比“支持x或更高版本”要复杂得多,因为Python的历史上有一些空白。 最令人头疼的是Python 2中u'' u''Unicode文字语法。在Python 3.0中删除了该语法,然后在Python 3.3中恢复 ,因为缺少它导致了比预期更多的痛苦。 这一更改意味着任何带有u'Unicode literal'脚本都可以在Python 2.7和3.3+下运行,而不能在Python 3.0、3.1或3.2下运行。

Python文档非常适合跟踪功能的引入时间。 例如, typing模块告诉您的第一件事是:

26.1。 typing -支持类型提示

3.5版的新功能。

Ctrl-F样式搜索“新增”或“更改”通常会显示所有最重要的更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM