【问题标题】:Deployment to heroku failed while pip installing requirements using @ [duplicate]使用@ [重复] pip 安装要求时部署到 heroku 失败
【发布时间】:2021-12-15 09:01:51
【问题描述】:

使用virtualenv,我正在开发一个 Dash/Python 应用程序。添加新包后,我运行了

pip freeze > requirements.txt

然后尝试使用 git 将新更改推送到链接的 Heroku 服务器。在此评论之前,服务器上的先前版本正在运行且没有错误。

Heroku 在部署过程中使用pip 安装requirements.txt 中列出的所需包时,出现故障。

-----> 使用 pip 安装需求

...

处理 /opt/concourse/worker/volumes/live/976f8942-f51d-4f0e-7352-2a10f0820d0e/volume/cffi_1625814703974/work

错误:由于 EnvironmentError 无法安装软件包:[Errno 2] 没有这样的文件或目录:'/opt/concourse/worker/volumes/live/976f8942-f51d-4f0e-7352 -2a10f0820d0e/volume/cffi_1625814703974/work'

requirements.txt中,对应的包显示为:

cffi @ file:///opt/concourse/worker/volumes/live/976f8942-f51d-4f0e-7352-2a10f0820d0e/volume/cffi_1625814703974/work

我在 Google 上搜索过,但在 requirements.txt 中找不到有关使用 @ 的任何信息。这是列表中第一个有 @link 并且 pip 失败的列表,所以这是可疑的。

有谁知道这个@是什么意思(我猜它是指向远程文件的链接),以及如何解决推送失败?

谢谢!

【问题讨论】:

标签: python heroku deployment pip requirements.txt


【解决方案1】:

我仍然不知道 @ 标记是什么,但是对于如何解决问题的第二个或更实际的问题,我发现出了什么问题。我可以猜出一些关于@标记的信息。

简而言之,不知不觉中,我似乎曾经在我的虚拟环境之外运行pip freeze > requirements.txt。因此,requirements.txt 中的软件包数量超过了必要的数量,这就是 Heroku 上的 pip 失败的根本原因。

我怀疑 @ 标记被赋予安装在 pip 之外的软件包。为什么而不是像,

cffi # installed outside of pip!

, pip 给出了奇怪的 URL,它们来自哪里,或者它们实际上是有效的?我不知道。

在某些情况下,将@ file://xxxxx 替换为由pip show <packagename> 确定的版本号(如==4.5.5)会有所帮助。但有趣的是,Heroku 上的 pip 无法安装 conda。这时候我想知道为什么我的项目需要conda

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-11
    • 2015-06-09
    • 2020-11-02
    • 1970-01-01
    • 2021-07-12
    • 2021-04-26
    • 2014-10-16
    • 1970-01-01
    相关资源
    最近更新 更多