遇到环境里装了哪些包、依赖关系和版本对不上的问题,可以先在项目环境里跑:
python -m pip inspect
它会输出 JSON,包含已安装发行版及其元数据,适合先保存下来排查环境差异。只想快速看某个包的版本,python -m pip show 包名 会更直观。
环境:pip 22.2+。命令只读取当前 Python 环境,不会修改依赖;最好用项目实际运行的解释器执行,比如虚拟环境里的 python。
遇到环境里装了哪些包、依赖关系和版本对不上的问题,可以先在项目环境里跑:
python -m pip inspect
它会输出 JSON,包含已安装发行版及其元数据,适合先保存下来排查环境差异。只想快速看某个包的版本,python -m pip show 包名 会更直观。
环境:pip 22.2+。命令只读取当前 Python 环境,不会修改依赖;最好用项目实际运行的解释器执行,比如虚拟环境里的 python。
这个命令更像是盘点当前环境,不负责判断依赖冲突。想顺手检查已安装包的依赖是否满足,可以再跑:
python -m pip check
无输出且退出码为 0 才算通过。两个命令都用同一个 python 调用,能避免 pip 和项目实际解释器指向不同环境。
NiroLv1#1 这个命令更像是盘点当前环境,不负责判断依赖冲突。想顺手检查已安装包的依赖是否满足,可以再跑:
python -m pip check无输出且退出码为 0 才算通过。两个命令都用同一个
python调用,能避免pip和项目实际解释器指向不同环境。
补一句:pip check 主要校验发行版声明的依赖是否满足,不会验证实际 import 或平台相关的运行问题。要留档排查时可以把两份结果都保存下来:
python -m pip inspect > pip-inspect.json
python -m pip check > pip-check.txt
这样既有完整元数据,也能单独看依赖声明的报错。
如果要对比两台机器的结果,建议把解释器信息也一起留档:
python -VV
python -m pip --version
python -m pip inspect > pip-inspect.json
同名包版本不一样时,先排除 Python 版本、平台和实际 pip 路径不同,省得只盯着 JSON 里的依赖树。
ZiorLv1#3 如果要对比两台机器的结果,建议把解释器信息也一起留档:
python -VV python -m pip --version python -m pip inspect > pip-inspect.json同名包版本不一样时,先排除 Python 版本、平台和实际 pip 路径不同,省得只盯着 JSON 里的依赖树。
再补个容易漏的点:多 Python 或容器环境里,最好把解释器路径和平台也记下来,不然版本看着一样,实际加载的环境可能不同。
python -c "import platform,sys; print(sys.executable); print(platform.platform())"
和前面的 python -m pip --version、pip inspect 放在一起,定位两台机器差异会更快。
别熬夜啦Lv1#4 再补个容易漏的点:多 Python 或容器环境里,最好把解释器路径和平台也记下来,不然版本看着一样,实际加载的环境可能不同。
python -c "import platform,sys; print(sys.executable); print(platform.platform())"和前面的
python -m pip --version、pip inspect放在一起,定位两台机器差异会更快。
这个组合主要确认“装了什么、声明依赖是否满足”。如果怀疑实际 import 到的不是预期环境里的包,还可以顺手看加载路径:
python -c "import requests; print(requests.__file__)"
多环境或容器里尤其有用,版本一样但路径不对时,pip inspect 本身不一定能看出这个问题。
Nathan03Lv1#5 这个组合主要确认“装了什么、声明依赖是否满足”。如果怀疑实际 import 到的不是预期环境里的包,还可以顺手看加载路径:
python -c "import requests; print(requests.__file__)"多环境或容器里尤其有用,版本一样但路径不对时,
pip inspect本身不一定能看出这个问题。
还可以用 importlib.util.find_spec 查模块实际会从哪里解析,避免为了排查去直接 import 一个可能有副作用的包:
python -c "import importlib.util; s=importlib.util.find_spec('requests'); print(s.origin if s else 'not found')"
它和 sys.executable、python -m pip --version 一起看,基本能先确认解释器、pip 和模块路径是不是同一套环境。