python - 将版本放在包名称中的错误方法?
问题描述
我正在使用具有嵌入式 python 环境的软件,该环境没有所有可用的标准 python 模块。例如没有pip
or pkg_resources
。添加第 3 方模块/包的唯一方法是将它们复制到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 的兼容性。
因此,我的建议是遵循此规则:仅在包名称中使用版本号,并且仅在您传达您正在创建包的一系列前向兼容版本时使用。
推荐阅读
- c# - 尝试在 C# 中重写以下算法,该算法基于一个公共键合并两个数组
- javascript - 计算按键中的值
- two-way-binding - 单向绑定是否意味着没有使用 setTimeout 函数的观察者?
- elasticsearch - Elasticsearch:从索引中的文档中获取 match_phrase
- java - 使用 Socks 的 Java JDBC 连接
- python - Plotly Python:在具有多个 Y 轴的分组条形图中对齐 X 轴
- regex - 如何在 AWK 中干净地处理/忽略(Unicode?)不可打印的二进制字符
- java - 设置自动保存计时器以在 java 中定期保存文件的最佳策略是什么(但不使用任何 javafx API)?
- html - 如何链接到父文件夹中的文件?
- javascript - 如何使用 redux 处理竞争条件