问题描述
在使用 Poetry 安装依赖时,经常会遇到安装过程卡死的问题,特别是在 Linux 系统(如 Ubuntu)上。这个问题通常发生在 Poetry 尝试访问系统密钥环(keyring)时。
典型症状
安装过程会卡在以下位置:
- Installing wrapt (1.12.1): Pending...
Checking if keyring is available
[keyring:keyring.backend] Loading KWallet
[keyring:keyring.backend] Loading SecretService
[keyring:keyring.backend] Loading Windows
[keyring:keyring.backend] Loading chainer
[keyring:keyring.backend] Loading libsecret
[keyring:keyring.backend] Loading macOS
Using keyring backend 'SecretService Keyring'
解决方案
方案一:禁用 keyring(推荐)
python3 -m keyring --disable
这个命令会禁用系统的密钥环服务,避免 Poetry 在安装过程中尝试访问密钥环。
方案二:设置环境变量
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
poetry install
方案三:使用 pip 安装
如果 Poetry 持续出现问题,可以临时使用 pip:
pip install -r requirements.txt
方案四:清理 Poetry 缓存
poetry cache clear --all pypi
poetry install
预防措施
1. 配置 Poetry 不使用密钥环
在项目根目录创建或编辑 poetry.toml
:
[poetry]
keyring = false
2. 设置全局配置
poetry config keyring.enabled false
3. 使用虚拟环境
确保在独立的虚拟环境中工作:
poetry env use python3
poetry install
问题原因
这个问题通常由以下原因引起:
- 密钥环服务问题:系统密钥环服务未正确配置或运行
- 权限问题:Poetry 无法访问系统密钥环
- 网络问题:在尝试访问密钥环时网络连接问题
- 系统资源:系统资源不足导致进程卡死
验证解决方案
安装完成后,可以通过以下命令验证:
poetry show
poetry run python -c "import sys; print('安装成功')"
相关资源
总结
Poetry install 卡死问题主要是由于密钥环访问问题引起的。通过禁用 keyring 或配置 Poetry 不使用密钥环,可以有效解决这个问题。建议在项目配置中永久禁用密钥环功能,避免后续安装时再次遇到类似问题。
评论区