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

标签 python pip virtualenv

我在我的 .bashrc 中使用 export PIP_REQUIRE_VIRTUALENV=true; 来确保我在为我从事的各种项目安装包时不会意外污染我的全局环境。

我依稀记得这相当于在调用pip时在命令行添加一个--require-virtualenv

但是,除了 in the source code of pip 之外,我找不到关于此任何地方任何 文档,其中明确抑制了该功能的帮助(使用 SUPRESS_HELP)!有 11 个此类选项的帮助也已明确禁用(例如 --no-input)。

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

这是不应依赖的实验性功能吗?我不应该使用(也不鼓励其他人使用)这些功能,还是有其他使用这些功能的方法?有人可以阐明这个难题吗?


更新: 我提出这个问题为 an issue on pip's Github page .

最佳答案

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

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

  1. 有些选项实际上是无意义的,它们的存在是为了完整性和兼容性,但通常不会被阅读帮助的人使用。例如,默认启用的 --use-wheel

  2. 一些选项是过渡性的或已弃用的,不应使用,因为它们可能会在未来的版本中被删除。例如 --use-mirrors,它标有注释 TODO: Remove after 6.0

  3. 一些选项可能是实验性的,或者可能无法在所有环境中工作。对于希望软件跨平台的最终用户来说,这可能是个问题,并且作者没有经过测试环境和放置条件语句的麻烦——对于不常用的专用选项来说,这可能是一种不必要的复杂性。也许 --default-vcs 就是一个例子。

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

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

关于python - 为什么 pip 中有用的命令行选项未记录并明确隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28566349/

相关文章:

python - 无法在virtualenv中使用pip安装html包

python - 如何打印requirement.txt中每个包的安装时间

python - 从本地 git 存储库访问 Python 包

python - 在 virtualenv 中使用 Psycopg2(Ubuntu 14.4,Python 3.4)

python - split() 缺少 1 个必需的位置参数 : 'y'

python - 尽管已导入其包,但访问 Python 模块失败

python - 私有(private) Pypi 服务器与私有(private) Github 存储库

python - virtualenv 环境的结构应该是什么样的

python - 是否可以只针对特定的 python 版本进行导入?

python - 使用 RE 查找仅包含拉丁字母、数字和下划线且不能以数字开头的字符串