在python中,每个py文件称为模块,包是另一类模块,包可以包含其他模块,当模块存储在文件中时,包就是模块所在的目录。此外,包必须含有一个__init__.py文件。出现ImportError:No module named XXX的问题,在于模块不在搜索路径里,从而导致路径搜索失败
搜索路径:查找一组目录
路径搜索:查找某个文件的操作
python搜索模块的路径(sys.path):
1)程序的主目录
2)PYTHONPATH目录(已经设置完成)
3)标准连接库目录
4)任何.pth文件,这里允许用户向.pth文本文件添加有效的模块搜索目录
对ImportError:No module named XXX问题,可以利用以下方法解决:
1.调用文件时,通过sys.path.append(‘模块文件目录’),但是这种在退出python环境时添加的模块搜索目录会自动消失
2.将.py文件放到site_package目录下
3.将模块文件放到python_dir/lib下
4.使用.pth文件,在site_package文件中创建.pth文件,然后将模块路径写进去,一行一个路径,pth文件也可以使用注释
# pth file for the my project
E:\pycharm\attribute_method
但是这种方法在不同的python版本中不能共享
5.标准实现方法:使用PYTHONPATH环境变量,在环境变量中输入相关的路径,不同路径用分号隔开。如果没有PYTHONPATH环境变量就创建它,创建方法(windows7系统):电脑 -- 属性 -- 高级系统设置 -- 环境变量 -- 系统变量 -- 新建,然后将目录加入创建即可。假如编写的.py文件在如下目录:C:\Users\Administrator\Desktop\test\module.py ,把C:\Users\Administrator\Desktop\test路径加入即可。加载.py文件时,本人在pycharm IDE 命令行和windows系统中命令行输入from 模块文件文件夹名称 import XXX.py才能把模块加载进来,使用import XXX.py还会出现上面的错误,在Ubuntu 14.10中的shell可以运行。