import搜索路径
思考
为什么需要了解import的搜索路径?
大家试想一下 在工作中今年在一个项目中可能会导入某一个目录下的模块文件,那这个时候怎么样才能让Python解释器能够找到该模块进行调用呢?
- 将这个模块拷贝一份到当前使用目录下 这种方式让模块太冗余
- 将这个模块所在路径直接告诉Python解释器 让Python解释器能够搜索到这个模块 ,这种方式比较灵活。
如果想要告诉Python解释器 某某模块的位置,我们需要先知道他是根据什么来查找模块的?
路径说明:
- 从上面列出的目录里依次查找要导入的模块文件
- 表示当前路径
- 列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序
程序执行时添加新的模块路径
sys.path.append('/home/it/xxx')
sys.path.insert(0, '/home/it/xxx') # 可以确保先搜索这个路径
In [37]: sys.path.insert(0,"/home/python/xxxx")
In [38]: sys.path
Out[38]:
['/home/python/xxxx',
'',
'/usr/bin',
'/usr/lib/python35.zip',
'/usr/lib/python3.5',
'/usr/lib/python3.5/plat-x86_64-linux-gnu',
'/usr/lib/python3.5/lib-dynload',
'/usr/local/lib/python3.5/dist-packages',
'/usr/lib/python3/dist-packages',
'/usr/lib/python3/dist-packages/IPython/extensions',
'/home/python/.ipython']
重新导入模块
为什么需要重新导入模块?
- 模块被导入后,import module不能重新导入模块,重新导入需用reload重新加载模块代码创建模块对象
导入指定目录下的模块的两种方式
- 将模块所在路径再程序中添加到sys.path列表中 该方法灵活,但是程序重启后还需要再次 添加列表
- 修改操作系统的PYTHON_PATH环境变量 export PYTHON_PATH=$PYTHON_PATH:路径
多模块开发注意点
import 模块名
可以理解成地址复制也就是引用from 模块名 import 功能名
可以理解为内容复制就是深拷贝。也就是说修改了原来的模块,只有重新导入或者重启程序才有效- 多个模块要共享同一个数据的时候必须使用 import 模块名 这种方式