Heroku 上的全新部署失败并显示“使用 --allow-unverified PIL to allow”
Posted
技术标签:
【中文标题】Heroku 上的全新部署失败并显示“使用 --allow-unverified PIL to allow”【英文标题】:Fresh deploy on Heroku fails with "use --allow-unverified PIL to allow" 【发布时间】:2014-03-24 09:09:16 【问题描述】:尝试将 Django 项目部署到 Heroku 上的新应用程序(过去两年代码在其他实例上运行) - 并受到以下打击:
Downloading/unpacking PIL==1.1.7 (from -r requirements.txt (line 7))
Could not find any downloads that satisfy the requirement PIL==1.1.7 (from -r requirements.txt (line 7))
Some insecure and unverifiable files were ignored (use --allow-unverified PIL to allow).
Cleaning up...
No distributions at all found for PIL==1.1.7 (from -r requirements.txt (line 7))
Storing debug log for failure in /app/.pip/pip.log
! Push rejected, failed to compile Python app
我知道pip
的最新变化,并希望使用安全的包,但在所有可用的包都按照 pip 的期望正确打包之前,我们需要一些解决方法。尤其是缺少 --allow-all-unverified 标志,这使得这是一个通过黑盒练习而不是无痛部署的反复试验。
有没有一种健全的方法可以克服这个障碍? (不仅仅是 PIL,这是第一个失败的包,如果我设法解决这个问题,还有其他几个像 pyPdf 这样的包会失败)
任何指针表示赞赏!
【问题讨论】:
【参考方案1】:我询问了 pip 的维护者,他回答了一个简单的解决方案。我正在详细说明如何去做,以回答我自己的问题。这是您现在需要做的事情 - 直到软件包在内部托管并经过验证。
在本地机器上,创建一个新的虚拟环境并在requirements.txt
文件顶部添加一行:
--allow-all-external
保存并运行:
pip install -r requirements.txt --download="~/temp/packages"
这将做的只是从requirements.txt
获取每个包名称并将包下载到~/temp/packages
目录并验证它。
对于每个验证失败的包,在requirements.txt
中添加另一行,就在允许所有外部包的第一行下方,如下所示:
--allow-unverified package-name
您可能需要 ping 维护者来解决此问题;)
继续直到 pip 成功完成,然后将更新的requirements.txt
提交到 vcs 并部署。
应该就是这样了。
【讨论】:
是我自己还是那是一个耗时且痛苦的过程?如果您查看其他工具,例如 npm 或 bundler,它们不会对未经验证的事情感到厌烦……反正只是在咆哮…… 对于像我这样的其他人:确保您使用的是最新版本的 pip 太...。否则您可能会尝试此操作并失败。当我这样做时,我特别被告知它找不到某些版本规范。升级 pip 本身让我过去了。以上是关于Heroku 上的全新部署失败并显示“使用 --allow-unverified PIL to allow”的主要内容,如果未能解决你的问题,请参考以下文章