You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python中的指定函数仅在脚本首次运行时执行?

解决方案

现有代码的逻辑本身已经不会重复执行安装操作:import_and_install函数会先尝试导入模块,导入成功就不会走安装分支,你感知到的“每次触发执行”实际是每次都在执行模块导入检查。如果想要完全跳过整个依赖检查环节,仅首次运行时执行,可以通过添加本地标记文件的方式实现,以下是完整实现代码:

import importlib
import subprocess
import pkg_resources
import os, time, json, datetime, sys

# 标记文件路径,和脚本同目录
FLAG_FILE = ".deps_installed"

def import_and_install(package):
    try:
       importlib.import_module(package)
    except (ModuleNotFoundError, pkg_resources.DistributionNotFound) as e:
       print("{0} module is not installed.\n Don't worry. will take care\n".format(package))
       subprocess.check_call([sys.executable, '-m', 'pip', 'install', package])


# 仅当标记文件不存在时执行依赖安装流程
if not os.path.exists(FLAG_FILE):
    # 注意:threading是Python标准库,无需安装,已从列表移除
    packages = ['pandas', 'numpy', 'xlwings']
    for package in packages:
          import_and_install(package)
    # 全部安装完成后生成标记文件
    with open(FLAG_FILE, 'w') as f:
        f.write("Dependencies installed successfully, skip check in next run")

# 导入依赖
import pandas as pd
import threading
import xlwings as xw
import numpy as np   

逻辑说明

  • 脚本启动后优先检查同目录下是否存在.deps_installed标记文件,存在则直接跳过整个依赖检查安装环节
  • 首次运行时标记文件不存在,会依次检查安装所有依赖,全部完成后自动生成标记文件
  • 如果后续需要新增依赖项,只需删除同目录下的.deps_installed文件,即可重新触发依赖检查安装流程

内容的提问来源于stack exchange,提问作者jyotirmay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:30:00