背景:
使用conda创建虚拟环境,导入tensorflow时出现各种模块不存在或冲突,发现pip下载和conda下载之间的差异
发现:
1、piplist下存在condalist不存在的包,导入piplist包;
2、condalist存在piplist不存在的包,导入condalist包;
3、两个list存在一个包的不同版本,导入piplist版本的包。
分析:
(参考:https://blog.csdn.net/qq_42003943/article/details/123198301)
1、在虚拟环境下使用pip,调用的是系统环境base的pip,因此piplist中的包即为系统环境piplist的包,因此piplist只有一个,所有环境共用,condalist各环境单独管理;
2、使用“python -m site”查看当前环境的包搜索路径,发现USER-SITE对应系统环境路径.local,且系统环境路径优先级高于虚拟环境路径,证明优先调用的piplist。
解决:
1、修改虚拟环境下的site.py文件,使用find path -name site.py 找到文件路径,用vim对该文件进行编辑;
2、修改USER_SITE和USER_BASE为虚拟环境包路径,具体参考分析中的链接。
结果:
1、操作后,发现虚拟环境下的pip仍为系统环境的pip,piplist仍为所有环境共用;
2、解决了piplist和condalist的优先级,即两个list存在同一个包的不同版本,导入condalist版本的包。