首页 > 解决方案 > 将版本放在包名称中的错误方法?

问题描述

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

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

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

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

标签: pythonpython-2.7packagepython-importdirectory-structure

解决方案


在大多数情况下,包中的版本号(无论语言如何)都用于传达兼容性。比如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 的兼容性。

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


推荐阅读