“pip list版本和import版本不一致”问题解决方案

问题描述

  1. 使用 pip install xxx 完成了某个包的安装,代码使用 import xxx 进行导入,但是运行出现 xxx中的某个函数或者模块不存在 类似的问题。使用 pip list 检查版本无误,摸不着头脑。
  2. 最直观的问题(用timm库举例):使用pip listhelp timm得到的包版本不一致。
    pip list结果:
    pip list结果
    help(timm)结果:
    help(timm)结果
    两者的版本号对不上。

根本原因是,我的项目中的timm源码文件夹和pip管理的timm冲突了。

解决方案

  1. 如果想留下pip list得到的版本,将help timmFILE路径下的文件进行删除。
  2. 如果想留下help timm得到的版本,使用pip uninstall timm将pip管理的timm删除。
  3. 如果解决不了,也有可能是别的路径出现冲突,可以参照文章下文进行分析。

python导入的模块搜索顺序

python在运行时,会按照指定的路径进行包的搜索,且在搜索的过程中路径有先后之分。具体如下:

  1. 导入内建模块(内建模块是随着解释器一起的,不用自己管,我们只需要查看下面的顺序即可)
  2. 程序根目录(python当前解释的文档的目录)
  3. PYTHONPATH环境变量设置的目录
  4. 标准库的目录
  5. 任何能够找到的.pth文件的内容
  6. 第三方扩展的site-package目录

需要做的,就是看看这些路径下是否有模块冲突了。

sys.path在python脚本执行时动态生成,它返回的是一个列表,包含2-6的五个部分。在python脚本中可以加入如下代码来查看得到的路径:

import sys
print(sys.path)

参考文章

python导入的模块搜索顺序详解(python import搜寻模块的机制详解):link
为什么pip list里面的包版本和import的包版本不一致?:link

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值