防止一个特殊的“PIP安装”错误
requirements-dev.txt的Python项目详细描述
requirements.txt
这是在运行时防止输入错误的保护措施 pip install -rrequirements-dev.txt。如果你把-r遗漏在 意外,此包将导致您的安装中止。
$ pip install requirements-dev.txt Collecting requirements-dev.txt Installing collected packages: requirements-dev.txt Running setup.py install for requirements-dev.txt ... error Complete output from command: running install It looks like you meant to type `pip install -r requirements-dev.txt`, but you left out the `-r` by accident. Aborting installation.
为什么?
如果pypi上没有这样的包,您可能会意外地安装 用您的需求文件名安装的包。恶毒的 用户可以注册一个模拟正确安装的包 处理并启动anny任意代码。
pypi(幸运的是)不允许requirements.txt作为包 名字,那案子已经办好了。所有被禁止的包裹名称 是hardcoded in PyPI source code 是:
- requirements.txt
- rrequirements.txt
- requirements-txt
- rrequirements-txt
但它显然并没有涵盖所有受欢迎的案例。这就是为什么 源代码在pypi上以几个流行的名称分发,这些名称不是 被pypi禁止:
- requirements-dev.txt
- requirements-dev
- requirements-test.txt
- requirements-test
有没有发生过?
是的。pypi上经常会出现打字错误。这个项目是 最好的例子。前一版本的requirements.txt 实际上做的不仅仅是中止安装。它提供了 精心编制的setup.py脚本,可以:
- 查看您的文件系统以找到您想要的需求文件 安装
- 在另一个PIP子流程中安装所有软件包
- 显示模拟正常安装过程的输出
新版本的pip完全吞噬了包的所有输出 安装脚本,但这种行为可以很容易地绕过-至少 在OS X和Linux上。也允许运行时版本切换(到0.0.0) 不断地安装这个软件包,因为总是有更新的 PYPI上提供的版本。如果出了什么问题(特别是在 它导致了加密和粗鲁的错误信息。
没什么害处。有时候确实有用。至少就我个人而言 意见。不管怎样,我的可用性和幽默感。这是 为什么requirements.txt安装其他软件包的时间更长,而且总是 在安装过程中使用错误代码退出。这主要归功于 从@aanand和his points拉取请求。我可能不会 同意所有这些,但我尊重人民的减贫战略。
但是,在 安装尝试。你知道…这是为了好玩。
如果你对这个的前一个版本中包含的黑客感兴趣 包引用contested-sense-of-humour分支或end-of-fun 标记此项目的 repository。