Pipenv 卡住了“⠋ 正在锁定...”

问题描述 投票:0回答:6

为什么我的pipenv在安装[numpy|opencv|pandas]时卡在“Locking...”阶段?

运行

pipenv install pandas
pipenv update
时,它会挂起很长时间,并显示一条消息和加载屏幕,表明它仍处于锁定状态。为什么?我需要做什么?

python pip pipenv
6个回答
78
投票

您的软件包正在安装,您的轮子正在构建

也许描述这种状态的更好术语是“构建并锁定...”或类似的术语。 如果您正在安装 numpy、opencv、pandas 或其他大型软件包,这种情况尤其可能发生。

后台发生的事情是,pipenv 正在下载您的软件包,并且可能正在构建轮子。

这种情况下的补救措施通常是极大的耐心。

什么是锁定?

要了解有关 pipelinev 上下文中“锁定”的更多信息,您可以在此处阅读更多内容:

https://pipenv.kennethreitz.org/en/latest/basics/#pipenv-lock

$ pipelinenv lock 用于创建 Pipfile.lock,它声明项目的所有依赖项(和子依赖项)、它们的最新可用版本以及下载文件的当前哈希值。这确保了可重复的、最重要的是确定性的构建。

但是

,有时只是一个缓慢/大型的安装,而是您的Pipfile[.lock]的问题。如果您相当确定这是问题所在,请尝试

pipenv lock --clear
并重新运行
pipenv install
命令,另请检查
此线程
以获取更多信息。


6
投票
pipenv --rm

没有帮助。

最后,问题是我运行了

pipenv install "boto3~=1.21.14"

来从

boto3 = "==1.17.105"
升级boto3。但我还有其他相互冲突的要求(在我的例子中,
botocore = "==1.20.105"
s3transfer = "==0.4.2"
),它们是 boto3 依赖项。新版本的 boto3 需要这两个软件包的较新版本,但
==
要求不允许这样做。 Pipenv 没有解释这一点,只是永远旋转着“锁定……”。
因此,如果您遇到这种情况,我建议您仔细查看您的 Pipenv 软件包,看看是否存在任何明显的冲突,并尽可能放宽或删除软件包要求。

就我而言,我可以从列表中完全删除 s3transfer 和 botocore 软件包,并依靠 boto3 来获取必要的版本。


3
投票
https://github.com/pypa/pipenv/issues/3827

我建议回到pip


2
投票
pipenv --rm

- 删除虚拟环境

然后 

pipenv shell

- 这将再次启动虚拟环境

然后

pipenv install

再次安装所有软件包

为我工作


2
投票
pipenv

与工作目录中现有的

requirements.txt
文件一起使用的人们,您可能会发现这个 Github 帖子 有帮助。 注意:在尝试我所展示的内容之前,我还使用了

pipenv --rm

HTH;)
附:在此向 

Zebradil 的脚本

致敬,以创建 requirements.txt,以防您与不使用 pipenv 的其他人协作。

    


0
投票
--verbose

末尾使用

pipenv install
发现它在使用
git clone --quiet
从私人存储库克隆时挂起。事实证明 git 正在要求提供凭据,但这似乎隐藏在终端中,可能是由 pipelinev 隐藏的。我输入了我的凭据(github 令牌),它起作用了。
    

© www.soinside.com 2019 - 2024. All rights reserved.