当导入一个模块,系统会去哪些路径找:
In [5]: import sys
In [6]: sys.path
Out[6]:
['', #当前路径
'/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',
'/home/mm/.local/lib/python3.5/site-packages',
'/usr/local/lib/python3.5/dist-packages',
'/usr/lib/python3/dist-packages',
'/usr/lib/python3/dist-packages/IPython/extensions',
'/home/mm/.ipython']
就是这些路径,从上到下找。
如果你要导的模块在其它路径,可以将该路径 添加到此系统list当中:
In [7]: sys.path.
sys.path.append sys.path.extend sys.path.remove
sys.path.clear sys.path.index sys.path.reverse
sys.path.copy sys.path.insert sys.path.sort
sys.path.count sys.path.pop
In [7]: sys.path.append("/home/mm/桌面/feijidazhan")
In [8]: sys.path
Out[8]:
['',
'/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',
'/home/mm/.local/lib/python3.5/site-packages',
'/usr/local/lib/python3.5/dist-packages',
'/usr/lib/python3/dist-packages',
'/usr/lib/python3/dist-packages/IPython/extensions',
'/home/mm/.ipython',
'/home/mm/桌面/feijidazhan']
重新导入
假设在你引入一个模块后,你还未退出,这个模块就被修改了,那么你在不退出程序的情况下如何更新这个模块呢?
In [5]: import testModule
In [6]: test
testModule testModule.py
In [6]: testModule.
testModule.py testModule.test
In [6]: testModule.test() #在导入testModule之后,test()方法已修改
------1-----
In [8]: import testModule #这样重新引入,是不起作用的
In [9]: testModule.test()
------1-----
In [13]: from imp import reload #Python2中 reload()方法已内置,可以直接使用
In [14]: reload(testModule)
Out[14]: <module 'testModule' from '/home/mengmei/桌面/feijidazhan/testModule.py'>
In [15]: testModule.test() #模块更新成功
------1-----
------2-----