如何使用Pipenv 2024.0.1卸载[dev-packages]中的开发包?
Pipenv 2024.0.1 无法卸载开发依赖包的问题解决
问题描述
我的Pipfile的[dev-packages]区域有几个不需要的包,但用最新版Pipenv(2024.0.1)卸载时完全没效果,卸载[packages]里的包却正常。我试了pipenv uninstall packagename、pipenv uninstall --dev packagename和pipenv uninstall -d packagename三种命令,都没用。
比如卸载python-docx时,命令输出显示成功:
% pipenv uninstall --dev python-docx Building requirements... Resolving dependencies... ✔ Success! Uninstalling python-docx... pipenv uninstall --dev python-docx 8.97s user 1.07s system 84% cpu 11.921 total
但执行完后Pipfile完全没变化,Pipfile.lock只删了importlib-metadata、zipp这类无关依赖,python-docx还在里面,diff内容如下:
diff --git a/Pipfile.lock b/Pipfile.lock index 5b761ce..b3ad052 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -296,14 +296,6 @@ "markers": "python_version >= '3.5'", "version": "==3.6" }, - "importlib-metadata": { - "hashes": [ - "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e", - "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc" - ], - "markers": "python_version < '3.10'", - "version": "==7.0.1" - }, "jinja2": { "hashes": [ "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa", @@ -657,14 +649,6 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==1.26.18" }, - "zipp": { - "hashes": [ - "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31", - "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0" - ], - "markers": "python_version >= '3.8'", - "version": "==3.17.0" - }, "zope.event": { "hashes": [ "sha256:2832e95014f4db26c47a13fdaef84cef2f4df37e66b59d8f1f4a8f319a632c26", (END)
解决办法
1. 手动修改Pipfile后重建lock文件
直接编辑Pipfile,删掉[dev-packages]下对应的包条目,然后执行:
pipenv lock --dev
这个命令会重新生成lock文件,同步虚拟环境里的依赖,确保目标包被移除。
2. 彻底重建虚拟环境
如果手动修改后还是有问题,直接删掉现有虚拟环境和lock文件,重新初始化:
pipenv --rm rm Pipfile.lock pipenv install --dev
这样会从零开始创建虚拟环境,只安装Pipfile里保留的依赖。
3. 检查是否为间接依赖
有些包可能是其他开发依赖的子依赖,执行下面的命令查看python-docx的依赖链:
pipenv graph --dev | grep python-docx
如果发现它是某个你需要保留的dev包的依赖,那要么接受它存在,要么替换那个依赖包的版本(如果有不依赖python-docx的版本)。
4. 临时降级Pipenv版本
2024.0.1版本可能存在bug,暂时降级到之前的稳定版本(比如2023.10.3)试试:
pip install pipenv==2023.10.3
降级后再执行卸载命令,大概率能正常工作。
内容的提问来源于stack exchange,提问作者TommyK
相关产品推荐
相关产品推荐

