尝试将 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 一样的包也会失败)
任何指示表示赞赏!
我询问了 pip 的维护者,他回复了一个简单的解决方案。我正在详细说明如何进行此操作,作为对我自己的问题的回答。以下是您现在需要执行的操作 - 直到软件包在内部托管并经过验证。
在本地计算机上,创建一个新的虚拟环境并在其顶部添加一行requirements.txt
file:
--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 并部署。
这应该就是全部了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)