为什么pip中有用的命令行选项未记录并明确隐藏?

时间:2015-02-17 16:37:14

标签: python pip virtualenv

我在export PIP_REQUIRE_VIRTUALENV=true;中使用.bashrc,以确保在为我所处理的各种项目安装软件包时不会意外污染我的全局环境。

我模糊地记得这与在调用--require-virtualenv时向命令行添加pip相同。

但是,除了in the source code of pip之外,我无法找到任何的任何文档,其中明确禁止了该功能的帮助(使用{{1} })!有11个此类选项也已明确禁用帮助(例如SUPRESS_HELP)。

我查看了该文件的历史记录,但没有发现提及为什么该功能隐藏在提交消息中。

这是一个不应该依赖的实验性功能吗?我不应该使用(也不鼓励他人使用)这些功能,或者使用这些功能有不同的方法吗?有人可以对这个难题发表一些看法吗?


更新:我将此问题提出为an issue on pip's Github page

1 个答案:

答案 0 :(得分:1)

免责声明:我不是pip的贡献作者,这些是推测,而不是pip的作者或维护者的见解。

以下一项或多项措施可能导致作者隐藏选项:

  1. 有些选项确实是noops,并且存在完整性和兼容性,但通常不会被阅读帮助的人使用。例如,--use-wheel默认启用。

  2. 某些选项已过渡或已弃用,因此可能会在将来的版本中删除这些选项。例如--use-mirrors,标有注释 TODO:6.0之后删除

  3. 某些选项可能是实验性的,也可能不适用于所有环境。对于期望软件是跨平台的最终用户而言,这可能是一个问题,并且作者没有经历测试环境和放置条件语句的麻烦 - 对于不经常使用的专用选项可能是不必要的复杂性。也许--default-vcs就是一个例子。

  4. 另一种可能性是,很少使用的选项的行为是非标准的或难以描述,因为它取决于外部变量或环境,在这种情况下,抑制帮助可能比提供帮助更容易令人困惑的。

  5. 当我是grep的维护者时,我们最初有很多未记录的选项。这些选项的行为是非标准的(例如,不符合POSIX),但出于历史原因并删除它们可能会破坏可能一直在使用它们的全球关键系统脚本。我不知道pip中是否存在任何此类选项,但是为了完整性,我想提一下这可能会隐藏某些选项的原因。