记录脚本可用于python2和python3以及特定的matplotlib

时间:2018-08-12 02:03:02

标签: python numpy matplotlib versioning assert

问候堆栈溢出!

我在一个研究环境中工作,在该环境中,我可能会使用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应该可以解决这类问题-并且我正在使用它。我来自较早的时候,多数情况下多个代码库都无法正常工作。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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