首页 > 解决方案 > 记录脚本可与 python2 和 python3 以及特定的 matplotlib 一起使用

问题描述

问候堆栈溢出!

我在一个研究环境中工作,我可能会使用 10 台不同的计算机和不同版本的 Python 和/或 matplotlib、numpy 等。这都是 Linux,但有些人可能会在 Windows 上使用我的代码,这可能会增加更多的复杂性。

我的许多 python 脚本都适用于 py2.x 和 py3.x——这可能是一个目标,但我有旧的 2.X 代码,不会很快被移植。 我想要一种方法来表明代码是否已在 Python2 和 Python3 上测试过,或者断言代码仅适用于 Python2(或某些 matplotlibs)。

我可以这样做:

assert(float(sys.version[0:3])<=2.8)
>>> import matplotlib as mpl
>>> assert(float(mpl.__version__[0:3])>=2.3)
Traceback (most recent call last):
AssertionError

我在这个网站上四处逛逛,发现了这个相关的帖子 (Checking python compatability with numpy and matplotlib) 参考帖子中的家伙只是被告知不要担心。“Python3.4 只适用于 matplotlib”。我意识到 Anaconda 应该可以帮助解决这些问题——我正在使用它。我来自更早的时代,那时大多数代码库都不能正常工作。

欢迎推荐方法。你喜欢断言吗?有没有更好的工具或技术?

谢谢!

标签: pythonnumpymatplotlibversioningassert

解决方案


assert如果它不适合会抛出一个错误,并使你的代码无法使用你没有测试的版本,即使它可以工作。如果您的代码没有对计算机(例如擦除磁盘、损坏的文件)或系统造成任何不良影响(例如,如果它无法正确运行,那么它可能不会,看到您在研究环境中工作,那么您应该让它运行。如果遇到错误,则停止。如果没有,它会继续运行。但是,您应该在文件的开头包含一个文档字符串,其中包含您测试过的版本,如下所示,

"""
Tested with
python <= 2.8,
matplotlib >= 2.3
...
... rest of docstring ...
"""
... rest of your code ...

推荐阅读