近日重装系统,安装了Anaconda3,而其包含了numpy等,于是在ipython中numpy使用好好的,而使用IDLE中则直接出错,“ImportError: No module named 'numpy'”。一想,肯定是路径配置问题,直接分别在ipython和idle中分别打印sys.path,一看两者果然不一样,而Anaconda3将其附带的所有模块都安装到了其自己的文件夹内,而其安装的时候却没有对系统环境变量进行更新。
sys.path
#IDLE
['C:\\Python34\\Lib\\idlelib', 'C:\\Python34\\lib\\site-packages\\pip-7.1.2-py3.4.egg', 'C:\\Windows\\system32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages']
#ipython
['', 'D:\\Anaconda3\\python34.zip', 'D:\\Anaconda3\\DLLs', 'D:\\Anaconda3\\lib', 'D:\\Anaconda3', 'D:\\Anaconda3\\lib\\site-packages', 'D:\\Anaconda3\\lib\\site-packages\\Sphinx-1.2.3-py3.4.egg', 'D:\\Anaconda3\\lib\\site-packages\\cryptography-0.8-py3.4-win32.egg', 'D:\\Anaconda3\\lib\\site-packages\\nose-1.3.4-py3.4.egg', 'D:\\Anaconda3\\lib\\site-packages\\win32', 'D:\\Anaconda3\\lib\\site-packages\\win32\\lib', 'D:\\Anaconda3\\lib\\site-packages\\Pythonwin', 'D:\\Anaconda3\\lib\\site-packages\\setuptools-14.3-py3.4.egg', 'D:\\Anaconda3\\lib\\site-packages\\IPython\\extensions']
numpy
<module 'numpy' from 'D:\\Anaconda3\\lib\\site-packages\\numpy\\__init__.py'>
因此,在此复习一下Python导入模块的搜索路径。sys.path由如下几个部分组成:
1)程序的主目录;
2)PYTHONPATH环境变量配置的目录;
3)标准库目录;
4).pth文件目录;
其中1)和3)是自动定义的,其余两个用于扩展命令。另外在运行时也可以通过改变sys.path来动态改变模块搜索路径。对于本文问题,直接配置PYTHONPATH环境变量即可。