2018-10-21 Python28 重新导入

2018-10-21  本文已影响0人  孟媛的笔记

当导入一个模块,系统会去哪些路径找:

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-----
上一篇下一篇

猜你喜欢

热点阅读