【问题】
之前导入另外一个Python模块,包括自己的模块,都是直接通过 import 模块文件名,即可实现导入。
后来想要把多个子模块都放到当前文件夹下面的某个子文件夹中,但是却不知道如何导入了。
【解决过程】
1.通过类似于
import subFolder/subModule
是无法导入的,因为不支持这种写法。
2.后来看到python怎么import指定文件夹下的模块,才知道,原来可以通过把对应路径加入到os的path中即可。
3.后来就去将自己的BlogsToWordpress中的众多博客的模块py文件都移至到一个子文件夹libs/blogModules中了:
libs中有:
crifanLib.py
BeautifulSoup.py
libs/blogModules中有:
BlogNetease.py
BlogBaidu.py
BlogSina.py
BlogQQ.py
BlogRenren.py
BlogCsdn.py
BlogSohu.py
BlogBlogbus.py
这样,对应代码本来是:
import os;
import re;
import sys;
import math;
......
import crifanLib;
import BlogNetease;
import BlogBaidu;
import BlogSina;
import BlogQQ;
import BlogRenren;
import BlogCsdn;
import BlogSohu;
import BlogBlogbus;
改为对应的:
import os;
import re;
import sys;
sys.path.append("libs");
sys.path.append("libs/blogModules");
import math;
......
import crifanLib;
import BlogNetease;
import BlogBaidu;
import BlogSina;
import BlogQQ;
import BlogRenren;
import BlogCsdn;
import BlogSohu;
import BlogBlogbus;
就可以实现将各个子模块BlogBaidu,BlogNetease等都正常导入了。
【总结】
1.如果第三方库,和当前python脚本都在同一个文件夹下面,那么直接通过 import xxx,即可导入,即可使用第三方库。
2. 如果第三方库,在别的路径下,比如此处在子文件夹下,那么可以通过将其路径添加到os.path中方法:
sys.path.append(文件夹路径);
实现让python可以找到对应的库,实现可以导入并使用第三方库的目的。
3. 需要注意一点的是,需要自己保证导入的各个模块之间,以及和系统模块之间,没有出现重名的模块,就行了。
**************************************
【问答:】在引入模块的时候发生了什么
先看一个例子,在文件test.py中的代码:
#test.py def display(): print 'hello world' display()
在test1.py中引入模块test:
#test1.py import test
然后运行test1.py,会输出”hello world”。也就是说在用import引入模块时,会将引入的模块文件中的代码执行一次。但是注意,只在第一次引入时才会执行模块文件中的代码,因为只在第一次引入时进行加载,这样做很容易理解,不仅可以节约时间还可以节约内存。