防止一个特殊的“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第三方库


热门话题
当我使用vert时使用java。要创建路由,地址已在使用中   java十六进制字符串到int的转换工作不正常   从Select语句生成的java JPA Hibernate ID值   javajavax。面孔。FacesException:未上载任何文件   java Android从getIntent()获取应用程序组件   java神经网络用于查找特定类型的网站?   java如何在将文件流写入outputStream时激活XSS?   java无法在tomcat服务器中部署Spring应用程序   聊天java Web服务器,http部分响应   java使用ObjectOutputStream在单个ZipOutputStream中写入多个ZipPentry   java如何使用空布局管理器在JPanel上添加滚动条?   java Cucumber功能文件未绑定到粘合路径   mysql Java从值数组中选择   java setOnItemClickListener()不处理片段的listView   java maven和eclipse构建冲突   java OkHttp:无法通过POST方法向服务器发送数据   java无法在recycler视图中为不同的视图持有者实现稳定的ID   java只有一个类可以实例化所有其他类