python - 记录脚本可与 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 应该可以帮助解决这些问题——我正在使用它。我来自更早的时代,那时大多数代码库都不能正常工作。
欢迎推荐方法。你喜欢断言吗?有没有更好的工具或技术?
谢谢!
解决方案
assert
如果它不适合会抛出一个错误,并使你的代码无法使用你没有测试的版本,即使它可以工作。如果您的代码没有对计算机(例如擦除磁盘、损坏的文件)或系统造成任何不良影响(例如,如果它无法正确运行,那么它可能不会,看到您在研究环境中工作,那么您应该让它运行。如果遇到错误,则停止。如果没有,它会继续运行。但是,您应该在文件的开头包含一个文档字符串,其中包含您测试过的版本,如下所示,
"""
Tested with
python <= 2.8,
matplotlib >= 2.3
...
... rest of docstring ...
"""
... rest of your code ...
推荐阅读
- android - 无法在 android 模拟器上为 10.0.2.2 设置 cookie
- spring-boot - 如何连接到两个不同的集群?
- gatsby - Gatsby 网站未在 IE 11 中呈现
- excel - Excel 宏以填补列下方的日期空白
- java - 使用并行流将元素添加到 java 列表中是否错误?
- ruby - 尝试从键访问值时,得到“[]”:没有将字符串隐式转换为整数(TypeError)
- sql - 设计具有类型的组和具有项目类型与组类型相关的类型的项目
- excel - XML 文件中的嵌入式 Office 加载项 - 清单位置
- php - 等式语句左侧的数组。“意外的'='”错误
- linux - bash 嫌疑人刚刚开始进程