加载调用这个函数的包下的所有模块 python函数
2014-04-17 17:14
363 查看
autodiscover.py
#!/usr/bin/env python
#用来加载调用这个函数的包下的所有模块:
check = lambda f : not f.startswith('_') and f.endswith('.py')
def autodiscover(filename, filter=None):
if not filter:
filter = check
exec_lines = []
cur_dir = osp.abspath('.')
abspath = osp.abspath(osp.dirname(filename))
#print "&&&&&&cur_dir:%s&&abspath:%s&&***filename:%s&&&%s" %(cur_dir,abspath,filename,osp.dirname(filename))
sys.path.insert(0, abspath)
os.chdir(abspath)
all_modules = []
for path, dirs, files in os.walk('.'):
modules = [f[:-3] for f in files if check(f)]
if not modules:
continue
all_modules.append(modules)
if path == '.':
exec_lines.append("import %s" % (','.join(modules)))
else:
import_path = '.'.join([x for x in path.split(os.path.sep) if x != '.'])
exec_lines.append("from %s import %s" % (import_path, ', '.join(modules)))
exec('\n'.join(exec_lines))
os.chdir(cur_dir)
sys.path.pop(0)
return all_modules
#!/usr/bin/env python
#用来加载调用这个函数的包下的所有模块:
check = lambda f : not f.startswith('_') and f.endswith('.py')
def autodiscover(filename, filter=None):
if not filter:
filter = check
exec_lines = []
cur_dir = osp.abspath('.')
abspath = osp.abspath(osp.dirname(filename))
#print "&&&&&&cur_dir:%s&&abspath:%s&&***filename:%s&&&%s" %(cur_dir,abspath,filename,osp.dirname(filename))
sys.path.insert(0, abspath)
os.chdir(abspath)
all_modules = []
for path, dirs, files in os.walk('.'):
modules = [f[:-3] for f in files if check(f)]
if not modules:
continue
all_modules.append(modules)
if path == '.':
exec_lines.append("import %s" % (','.join(modules)))
else:
import_path = '.'.join([x for x in path.split(os.path.sep) if x != '.'])
exec_lines.append("from %s import %s" % (import_path, ', '.join(modules)))
exec('\n'.join(exec_lines))
os.chdir(cur_dir)
sys.path.pop(0)
return all_modules
相关文章推荐
- 客户应用程序调用COM API CoFreeUnusedLibraries()时,COM库遍历这个客户端应用已加载所有的DLL服务器并通过调用它的DllCanUnloadNow()函数查询每一个服务器
- nginx的所有模块如何起来的-函数调用顺序
- 加载内核模块,实现新的系统调用:遍历系统当前所有进程的任务描述符,并将pid组织成树状结构显示
- TGraphicControl(自绘就2步,直接自绘自己,不需要调用VCL框架提供的函数重绘所有子控件,也不需要自己来提供PaintWindow函数让管理框架来调用)与TControl关键属性方法速记(Repaint要求父控件执行详细代码来重绘自己,还是直接要求Invalidate无效后Update刷新父控件,就看透明不透明这个属性,因为计算显示的区域有所不同)
- 检测内核已加载模块的所有导出函数是否被inlinehook
- VS2008环境下C++调用Python模块函数----一封邮件引发的关机
- 在linux中 应用程序如何调用模块内的函数
- ASP常用的几个功能模块封装成函数调用(登录验证,状态切换。。) http://www.tsingfeng.com/archives/?article-89.html
- modprobe,insmod内核模块加载函数
- Cortex-M3动态加载三(模块调用系统函数)
- 在linux中应用程序如何调用模块内的函数
- 创建一个模块calculator.py,完成任意两个数的加(add)、减(sub)、乘(mult)、除(div)运算;导入该模块,分别调用其中的函数,完成如下操作: 1、25+56 2、86-68 3
- win7下修改注册表问题 模块"jscript.dll"已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005 我是WIN7
- PHP 命名空间以及自动加载(自动调用的函数,来include文件)
- Linux内核模块导出后无法调用问题解决(模块间函数调用通讯)
- __main函数的由来及做了哪些事情(在stm32复位后会调用这个函数)
- DLL动态加载时调用类成员函数小结
- PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类
- php动态加载模块的时候出现PHP_FE_END’未声明(不在函数内) -----{error: ‘PHP_FE_END’ undeclared here (not in a function)}
- eclipse中查找函数的所有调用