防止一个特殊的“PIP安装”错误

requirements-dev.txt的Python项目详细描述


PyPI

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java有可能让Glassfish JAAS领域与一个已安装的应用程序共享一些类吗?   卸载weblogic时发生java log4j错误   java如何读取信息并将这些信息放入对象数组中   java线程池执行器。创建新线程时执行(Runnable命令)   java无法将project facet动态Web模块的版本更改为2.5   未添加到ArrayList Java Android的元素   javajavax。xml。绑定UnmarshaleException:意外元素(uri:,local:“ProcessCreditApplication”)。预期的元素是   java如何通过youtube API获取已删除视频的列表   如何在JavaBean验证中停止级联   java为什么我的ListView使我的应用程序崩溃,而不是列出我的条目?   java Guice多数据库自动切换   java(JDA)Mute命令在代码的第四行中断   推荐一种可通过Java中的随机访问进行更新的索引文件格式   java将arrayList添加到2x2 arrayList   java json对象数据发生变化,有时没有值   java使用Jedis库在redis中一次存储字符串列表   java快速排序分区   java setDaemon(false)是冗余的吗?   Java中的itext格式pdf