我有一个需要一些 DevOps TLC 的项目,所以我终于构建了我的安装脚本。这最终将是一个可以在本地通过 pip 安装的包,但可能不会在 PyPI 中结束。
它依赖于一个名为 u2py
的模块。 . It is this package ,为 U2 数据库操作创建,not this package ,为了……别的东西。我想要的只是由第 3 方供应商(Rocket)安装的,我不想要的在 PyPI 中。
在这种情况下,我的包裹的预期行为应该是什么? 我将在我的自述文档中包含有关此内容的简介,但这是否足够?
我曾考虑抛出异常来识别错误包何时存在,但这让我感到很奇怪。似乎最pythonic的事情是不要将它添加到我的安装脚本中,并盲目假设import u2py
结果是我可以使用的模块。如果它像鸭子一样嘎嘎叫,解析 DynArray
就像鸭子一样,call()
小号 SUBROUTINE
就像一只鸭子,那么它就是一只鸭子,对吧?否则,如果出现错误,用户只会去实际阅读文档。
我看过 classifiers
,但不确定它们是否适用于此。
最佳答案
理想情况下,在安装时(在 setup.py
中)有一种方法可以检测软件包是否被安装到“u2 环境”中,如果是这种情况,安装可能会失败(带有适当的错误消息)。
使用此解决方案,您将无法提供内置发行版(轮子),因为它们不执行 setup.py
文件在安装时,但只是发布源分布应该没问题。
关于Python 需求与 PyPi 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60287455/