为何安装Anaconda后Python 3.6 IDLE导入numpy仍报模块不存在错误?
你遇到的报错本质是两个完全独立的Python环境没有共享第三方包目录:当前打开的IDLE,是当初单独安装的Python 3.6自带的编辑器,它绑定的解释器既不是Anaconda base环境的Python,也不是Anaconda自定义虚拟环境内的Python,和Anaconda安装的所有包处于完全隔离状态——哪怕Anaconda界面显示numpy安装正常,这个独立IDLE对应的Python环境根本没有装numpy,自然会触发模块找不到的报错。
之前判断“IDLE和Python3.6模块文档处于同根目录就不存在路径问题”的逻辑本身没有错,但这个目录本来就是独立Python3.6的安装目录,和Anaconda的目录没有任何关联。全默认安装流程下,两个Python环境会完全隔离,不会自动共用已安装的第三方包。
直接在触发报错的IDLE Shell窗口里依次输入两行代码执行:import sysprint(sys.executable)
输出的路径就是当前IDLE实际调用的Python解释器位置,正常情况下这个路径不会出现在Anaconda的安装目录层级下,大概率会是类似C:\Python36\python.exe的独立安装路径,这就是问题的直接证据。
如果你希望继续使用当前的独立Python 3.6+IDLE组合
- 打开刚才查到的独立Python3.6安装目录下的
Scripts文件夹,在文件夹地址栏输入cmd按回车弹出命令行 - 执行
pip install numpy即可把numpy安装到当前独立的Python环境中,IDLE就能正常导入模块。注意Python3.6版本较老,要选择适配3.6的numpy版本,避免安装过高版本触发兼容问题。
如果你希望直接使用Anaconda环境中已经装好的numpy,不想重复安装
- 移除当前桌面绑定了独立Python3.6的IDLE快捷方式
- 打开Anaconda的安装目录,如果使用base环境就直接进到根目录,如果使用自定义虚拟环境就进到
envs/对应环境名的子目录 - 找到目录下的
idle.bat文件,右键发送快捷方式到桌面,后续用这个快捷方式打开的IDLE,会直接绑定对应Anaconda环境的解释器,自然能识别到已经安装的numpy。
很多用户全程遵循默认步骤依然触发这个问题,是安装顺序带来的影响:先安装了独立的Python3.6,后续安装Anaconda时,默认配置没有把Anaconda的Python路径设为系统环境变量的最高优先级,导致系统始终把最早安装的独立Python3.6作为默认关联的解释器,conda安装的所有包都不会被这个独立解释器读取到。
内容的提问来源于stack exchange,提问作者Davide Trono

