【python】动态运行py文件并生成exe可执行程序

# main.py
if __name__ == '__main__':
    if len(sys.argv) > 1:
        file_path = sys.argv[1]
        check_folder = os.path.dirname(file_path)
        data = check_one_file(file_path)
    else:
        check_folder = os.path.dirname(sys.executable)
        print(check_folder)
        before_check(check_folder)
        data = checking(check_folder)
# middleware.py
import os
import importlib
import sys

class MiddleWare:
    def __init__(self, content):
        self.content = content
        self.result = []
        self.run_all_py()

    def run_all_py(self):
        libraries_path = self.resource_path('check_items')
        print(libraries_path)
        files = os.listdir(libraries_path)
        for file in files:
            if file.endswith('.py') and file != "device.py":
                try:
                    self.run(file)
                except Exception as e:
                    print('file:{} Error: {}'.format(file, e))

    def run(self, script_path):
        script_name = "check_items." + os.path.basename(script_path).replace('.py', '')
        mod = importlib.import_module(script_name)
        result = mod.check_function(self.device)
        if result:
            problem, advise, detail = result
            self.result.append([problem, advise, detail])


    # visit resource lib
    def resource_path(self, relative_path):
        # check if Bundle Resource
        if getattr(sys, 'frozen', False):
            base_path = sys._MEIPASS
        else:
            base_path = os.path.abspath(".")
        return os.path.join(base_path, relative_path)

编译时需要在datas字段增加资源文件夹信息: (资源文件夹的路径, 内部关联用的资源名称)

#  xxx.spec

a = Analysis(
    datas=[('check_items', 'check_items')],
)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值