【问题标题】:Documenting that a script works with python2 and python3 and a particular matplotlib记录脚本可与 python2 和 python3 以及特定的 matplotlib 一起使用
【发布时间】:2018-08-12 02:03:02
【问题描述】:

问候 Stack Overflow!

我在一个研究环境中工作,我可能会使用 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 应该可以帮助解决这些问题——我正在使用它。我来自更早的时代,那时大多数代码库都不能正常工作。

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

谢谢!

【问题讨论】:

    标签: python numpy matplotlib versioning assert


    【解决方案1】:

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

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

    【讨论】:

    • 好点,达斯卡迪斯。将兼容性信息添加到文档字符串听起来很合适。我被 assert 挂断了,忘记了 warn。事实上,在 warn 上引用文档 * 警告消息通常在提醒用户程序中的某些条件有用的情况下发出,其中该条件(通常)不保证引发异常并终止程序。例如,当程序使用过时的模块时可能要发出 * 警告
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2021-09-20
    相关资源
    最近更新 更多