python动态导包实现命令行动态调用不同项目

实现的方式是 使用python 内置包 argparse ,学习 argparse 请点击

思想是:
1.使用argparse 获取命令行参数,比如命令行传递的项目名
2.使用动态导包 import(project_name)
3.获取包内不同模块或包 getattr()

实例: 最终目的是通过调用main文件来让不同项目下的test文件执行
当前文件夹下有项目A文件夹 ,项目B文件夹,main.py文件
项目A 文件夹下有 prj 文件夹(包)
test_prj 下有__init__.py文件 有 test.py文件
项目B可以创建和A项目一样的目录,这里就不写了,自己手动创建

test.py文件内容如下:

class A:
  def start(self):
    print("A项目启动了")

__init__.py文件内容如下

from .test import *
def start():
  a1 = A()
  a1.start()

那么我如何想要通过main.py文件动态调用项目A启动呢?
方法就是在main.py里面写入

import argparse

parser = argparse.ArgumentParser(description='test __import__ ')
parser.add_argument("--prj_name",dest="prj_name",default="A.prj")

args = parser.parse_args()
prj_name = args.prj_name
prj_module = __import__(prj_name)
test_prj = getattr(prj_module,prj_name.split(".")[-1])
test_prj.start()

下面就是调用命令

在main.py文件夹下
打开终端
输入

启动项目A
python main.py --prj_name  "A.prj"  
或 
python main.py    

启动项目B
python main.py --prj_name  "B.prj"  

这样就使用动态调用不同项目

你可能感兴趣的:(python动态导包实现命令行动态调用不同项目)