首页 > 代码库 > python动态import某个文件夹下的模块
python动态import某个文件夹下的模块
因为有 “用户上传脚本,动态运行”的需求,所以要动态地import用户上传的模块
所以写了个函数动态地import
# -*- coding: utf-8 -*- import os import sys import os.path import Queue import commands def test(rootDir): #判断传入的路径下是否有“__init__.py”这个文件了,如果没有则创建,否则import会认为没有这个moudle if os.path.exists(rootDir): arr = rootDir.spliplit("/") pathDir = "" for path in arr: pathDir = pathDir +path+"/" if not os.path.exists(pathDir+"/__init__.py"): commands.getoutput("touch " +pathDir+"/__init__.py") #遍历文件夹找出app_开头的py文件,导入,注意globals,否则作用域只是在这个函数下 list_dirs = os.walk(rootDir) for dirName, subdirList, fileList in list_dirs: for f in fileList: file_name = f if file_name[0:4] == "app_" and file_name[-3:] == ".py": impPath = "" if dirName[-1:] != "/": impPath = dirName.replace("/",".")[2:] else : impPath = dirName.replace("/",".")[2:-1] print dirName,"\n",impPath if impPath != "": exe_str = "from " + impPath+"."+file_name[0:-3]+" import * " else: exe_str = "from " +file_name[0:-3]+" import *" exec(exe_str,globals()) test("./app/inapp/") a = Printaa() a.printha()
./app/inapp/有个app_XXX.py的文件,里面有
Printaa这个类,用来测试的
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。