将版本放在包名称中的错误方法?

Bad approach to put version in package name?

我正在使用具有嵌入式 python 环境的软件,该环境没有所有可用的标准 python 模块。 例如,没有 pippkg_resources。添加第三方 modules/packages 的唯一方法是将它们复制到 sys.path.

中引用的路径中

目前我正在编写我自己的包的第一个版本,以后还会有更多。

现在回答我的问题。将版本号包含在包名称中或完全作为子包是否被认为是一种不好的方法? 例如 mypackage_0_1/mypackage/0_1/

如果是这样,什么是解决这个问题的好选择?

在大多数情况下,包中的版本号(与语言无关)用于传达兼容性。比如Qt:有Qt4和Qt5系列。这些数字意味着我们有不同的 API,从 Qt4 切换到 Qt5 将主要破坏您的应用程序。同样,Python 遵循此模式:您有 Python 2.x 和 3.x 系列。这意味着如果您为 Python 3.6 编写应用程序,则预计它将与 Python 3.7 一起使用。换句话说,Python 3.x 版本是向前兼容的(即,为旧版本 Python 3.x 编写的软件预计 运行 与新版本兼容).但是,例如,为 Python 2.7 编写应用程序并在 Python 3.7 中 运行 应用程序通常会带来意想不到的结果。因此,Python 3.x 破坏了与 Python 2.x 的兼容性,它们既不向前也不向后兼容。

因此,我的建议是遵循以下规则:仅在包名称中使用版本号,并且仅当您传达您正在创建包的一系列向前兼容版本时。