2024-04-29 11:49:15 发布
网友
如果我用python3.6编写python包,那么如何确保代码可以下载并在其他python3环境中运行,比如python3.5?在
是什么使得一些python包(例如Tensorflow)与所有python3次要版本兼容,而其他python包(例如OpenAI Gym)只与python3.5兼容?在
最后:如果我的目标是编写与python3.5和3.6兼容的代码,那么使用python3.5环境会更好吗?在
圆滑而真实的答案: 用其他版本的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下工作。在
u''
u'Unicode literal'
Python文档很好地跟踪特性的引入时间。 例如,第一件事 ^{} module 告诉你是:
26.1. typing - Support for type hintsNew in version 3.5.
26.1. typing - Support for type hints
typing
New in version 3.5.
对“newin”或“changed-in”进行Ctrl-F式搜索通常会找到所有最重要的更改。在
Ctrl-F
圆滑而真实的答案: 用其他版本的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
告诉你是:
对“newin”或“changed-in”进行
Ctrl-F
式搜索通常会找到所有最重要的更改。在相关问题 更多 >
编程相关推荐