Heroku上的新部署失败了“使用 - 允许未经验证的PIL允许”

时间:2014-02-22 18:15:41

标签: python django heroku pip

尝试将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的预期,所有软件包都可以正确打包,我们需要一些解决方法。特别是缺乏 - 允许所有未经验证的旗帜使得这是一个试验性的错误,黑板运动而不是无痛的部署。

有没有明智的方法来克服这个障碍? (不仅仅是PIL,但这是第一个失败的软件包,还有其他几个像pyPdf一样,如果我设法解决这个问题就会失败)

任何指示赞赏!

1 个答案:

答案 0 :(得分:20)

我问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并部署。

应该是全部。