【发布时间】:2020-06-02 20:40:28
【问题描述】:
我有一个需要一些 DevOps TLC 的项目,所以我终于构建了我的安装脚本。这最终将是一个可以在本地通过 pip 安装的包,但可能不会在 PyPI 中结束。
它依赖于一个名为u2py 的模块。 It is this package,为 U2 数据库操作创建,not this package,用于...其他东西。我想要的只是由第 3 方供应商(Rocket)安装的,我不想要的在 PyPI 中。
在这种情况下,我的包的预期行为应该是什么?我将在我的自述文档中包含关于此的简介,但这是否足够?
我曾考虑抛出异常来识别错误包何时存在,但这让我感到很奇怪。似乎最pythonic的事情是不要将它添加到我的安装脚本中,并盲目地假设import u2py会导致我可以使用的模块。如果它像鸭子一样嘎嘎叫,像鸭子一样解析DynArrays,像鸭子一样解析call()s SUBROUTINEs,那么它就是鸭子,对吧?否则,如果出现错误,用户只会去实际阅读文档。
我查看了classifiers,但不确定它们是否适用于此。
【问题讨论】:
-
另外,也许回答这个问题的人有机会回答另一个类似的问题:stackoverflow.com/questions/41602869/…
-
".. 如果出现错误,用户将直接去实际阅读文档。"不,他们会(不会)在 Stack Overflow 上发布他们的代码并说“它不起作用”。你准备好处理这些问题了吗?你可以抛出一个错误,告诉它不是正确的包。如果终端支持,请将其设为粗体。
-
@usr2564301,区分它是哪个包的最佳方法是什么?我是否应该尝试检查是否存在唯一功能或类似功能?这是否违反了任何隐含的鸭子打字合同?我是不是想得太多了?
-
让我们等待 Python Powerhouses 可能会告诉我们什么。这是一个有趣的话题。
-
@DustinIngram,我不知道。目标受众是那些已经在使用
u2py环境的人,我的软件包不太可能使任何新的转换为这种非常古老和小众的技术.但是,这让很多人已经不了解 u2 环境,安装并尝试一下,然后看着他们的代码着火并且永远无法工作。看来我需要解决第二种情况而不是第一种情况。
标签: python pip setup.py pypi u2