Pipenv安装因sklearn弃用失败,替换后锁文件生成出错求助
解决Pipenv依赖锁定失败的步骤
1. 先修正Pipfile里的废弃依赖
直接编辑你的Pipfile,把已弃用的sklearn = "*"删掉,换成scikit-learn = "*",避免依赖冲突:
[[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [dev-packages] [packages] boto3 = "*" s3urls = "*" tabulate = "*" surfaceutils = {editable = true, git = "ssh://git.amazon.com/pkg/MiddleMileSurfaceResearchUtils"} s3fs = "<0.5.0" importlib-metadata = "*" pandas = "*" isodate = "*" scikit-learn = "*" # 替换原sklearn条目 numpy = "*" timedelta = "*" django-timedeltafield = "*" [requires] python_version = "3.9"
2. 解决surfaceutils的构建失败问题
报错里的python setup.py egg_info exited with 1是核心问题,说明这个私有Git包在生成元数据时出错:
- 先装齐编译依赖:Ubuntu/Debian下装
python3.9-dev gcc make,CentOS/RHEL下装python39-devel gcc make。 - 手动克隆仓库排查具体错误:
根据输出的具体错误修复(比如该包可能缺声明依赖、不兼容Python3.9),修复后再继续。git clone ssh://git.amazon.com/pkg/MiddleMileSurfaceResearchUtils ./temp-surfaceutils cd temp-surfaceutils pipenv run python setup.py egg_info
3. 重新生成锁文件
完成上面的修复后,清理旧环境重新安装:
# 删除旧虚拟环境和锁文件 pipenv --rm rm Pipfile.lock # 重新创建环境并安装依赖 pipenv install
如果还是锁失败,试试允许预发布版本:
pipenv lock --pre
4. 紧急场景的临时绕过方案
要是以上步骤都卡壳,先绕过Pipenv的锁定机制安装:
pipenv install --skip-lock pipenv run pip install scikit-learn pipenv run pip install -e git+ssh://git.amazon.com/pkg/MiddleMileSurfaceResearchUtils#egg=surfaceutils
执行pipenv graph查看已装依赖版本,确认无冲突后再尝试生成锁文件。
内容的提问来源于stack exchange,提问作者Joris Kinable
相关产品推荐
相关产品推荐

