尝试将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一样,如果我设法解决这个问题就会失败)
任何指示赞赏!
答案 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并部署。
应该是全部。