AWS EC2虚拟环境中pip安装numpy成功却无法导入问题求助
问题分析与解决办法
看你的命令行输出,创建虚拟环境时的这条提示是关键:
Not overwriting existing python script /home/ec2-user/env/bin/python (you must use /home/ec2-user/env/bin/python36)
这说明你的虚拟环境里的python命令并没有指向虚拟环境的Python3.6,而是依然链接到系统默认的Python(大概率是Python2.x)。你用pip install numpy确实把numpy装到了虚拟环境的Python3.6里,但运行python的时候调用的是系统Python,自然找不到这个模块。
验证问题
先在激活的虚拟环境里执行这几个命令确认:
# 查看python命令的路径 which python # 查看当前python版本 python --version # 查看pip对应的Python版本 pip --version
你会发现python指向的是系统路径(比如/usr/bin/python),而pip指向的是虚拟环境的env/bin/pip,对应Python3.6。
解决方法
方法1:直接使用虚拟环境的python36命令
运行脚本的时候换成python36:
python36 -c "import numpy; numpy.show_config()"
这样就能正确加载虚拟环境里的numpy了。
方法2:修正虚拟环境里的python软链接
如果想继续用python命令,可以手动覆盖虚拟环境里的软链接:
# 先删除原有的python链接 rm /home/ec2-user/env/bin/python # 创建新的链接指向虚拟环境的python36 ln -s /home/ec2-user/env/bin/python36 /home/ec2-user/env/bin/python
之后再运行python --version,应该显示Python3.6,这时候再导入numpy就正常了。
方法3:创建虚拟环境时强制覆盖
如果以后再创建虚拟环境,可以加上--always-copy参数,让virtualenv直接复制Python可执行文件而不是创建链接,避免这类问题:
virtualenv -p python36 --always-copy env
内容的提问来源于stack exchange,提问作者berlinguyinca
相关产品推荐
相关产品推荐

