问题描述:
可能ananconda一个虚拟环境里存在一个包,而import说没有该包,或者ananconda环境里不存在一个包,但是import又没有问题。
出现该情况的原因:
- 第一种,在ananconda虚拟环境里使用conda install,下载的包在虚拟环境中,但是因为里面site.py文件的设置问题,导致虽然是在该虚拟环境中,但是不能使用该环境里的包,使用的是外部python环境里的包,一般在/usr/local/py3/等路径下,此时如果外部环境里没有可用的包,就会import报错;
- 第二种,在ananconda虚拟环境中使用pip install,下在的包全部进入到外部虚拟环境中,但是因为site.py的设置,anaconda虚拟环境中没有该包,但是import却可以正常导入;
解决办法:
如果既有虚拟环境,又有外部环境,就需要注意install包的方式,最好使用conda,下载的包肯定在ananconda中,但是至于到底使用的外部环境的包还是虚拟环境的包,还需要查看site.py里的设置,
site.py文件如何修改:
修改两个地方即可:
USER_SITE = “”
USER_BASE = “”
USER_SITE 表示下载的package的存放路径,默认地址为None,也有可能为其他
USER_BASE 表示我们某一个环境下python.exe、pip.exe等脚本存放位置.
例如windows:
USER_SITE = "D:\\program_tools\\Anaconda3\\envs\\tensorflow\\Lib\\site-packages"
USER_BASE = "D:\\program_tools\\Anaconda3\\envs\\tensorflow\\Scripts"
linux稍有不同,pip、python脚本文件在ananconda/bin文件中
注意点:
一般出现这种情况,进入环境的方式就会有差异,虽然都是通过ananconda创建的环境,但是可能conda activate 和 source activate 都可以激活,或者一个可以,另一个不可以。
本文解析了在Anaconda环境中包导入问题的两种原因,一是site.py配置导致使用外部包,二是pip install导致包在外部。提供了解决方案并指导如何修改site.py,特别指出环境激活方式的重要性。
839

被折叠的 条评论
为什么被折叠?



