本节内容:
python import过程的方法
1. import的过程
假设在/tmp/test下有个testmodule.py文件,文件内容如下:
在控制台执行下面的命令:
[user@host]$ export PYTHONPATH=$PYTHONPATH:/tmp/test
[user@host]$ python
>>> import testmodule
>>> print testmodule.value
>>> import testmodule
>>> print testmodule.value
这时,可以看到屏幕上会输出"Hello World"字样
这个过程中python究竟干了些什么呢?
可能是这样的:
首先,查找sys.modules,判断testmodule是否已经被加载。如果已经被加载,则使用已经加载过的testmodule
如果没有加载过,则在sys.path下查找,找到后创建testmodule对象,并把创建后的testmodule保存在sys.modules变量中。
下面做两个小实验:
实验1:
上面的实验验证了,python会把加载过的module放在sys.modules变量中
实验2:
这时,发现第二次打印的testmodule.value,值就变成了0。这个实验说明,如果在sys.modules中找不到module,则会重新加载。
实验3:
实验3表明了,即使在PYTHONPATH下不存在的module,只要在sys.modules中能够找到,也能import。
基于python的import的方式,可以实现如下的功能:
1,在运行期设置pythonpath
2,动态创建python代码并执行之
3,动态创建module
4,在运行期将一个module移动到另外一个包下等。