You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现Python脚本运行时自动安装依赖(含Selenium)

当然可以实现!

这其实是Python自动化脚本分发里非常实用的需求,我来给你分享几个靠谱的实现思路,让分析师双击就能跑,完全不用手动折腾依赖:

方法1:脚本开头自动检查并安装依赖

直接在脚本最开头加一段代码,先尝试导入需要的库,如果导入失败,就自动调用pip安装。这种方式简单直接,不需要额外的配置文件。

示例代码如下:

import sys
import subprocess

# 定义需要安装的依赖列表
REQUIRED_PACKAGES = ["selenium", "webdriver-manager"]

def install_packages(packages):
    for package in packages:
        try:
            __import__(package.split("==")[0])  # 忽略版本号,只检查包是否存在
            print(f"{package} 已安装,跳过...")
        except ImportError:
            print(f"正在安装 {package}...")
            subprocess.run(
                [sys.executable, "-m", "pip", "install", package],
                check=True,
                stdout=subprocess.PIPE,
                stderr=subprocess.STDOUT,
                text=True
            )
            print(f"{package} 安装完成!")

# 先执行依赖安装
install_packages(REQUIRED_PACKAGES)

# 下面是你的核心业务代码
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

def create_change_ticket():
    # 用webdriver-manager自动获取对应版本的Chrome驱动
    driver = webdriver.Chrome(ChromeDriverManager().install())
    # 这里写你的工单创建逻辑,比如打开系统页面、填写表单等
    driver.get("你的变更控制系统URL")
    # ... 其他操作 ...
    driver.quit()

if __name__ == "__main__":
    try:
        create_change_ticket()
        print("工单创建流程执行完成!")
    except Exception as e:
        print(f"执行出错:{str(e)}")
    # 防止双击运行时窗口直接闪退
    input("\n按回车键退出...")

关键细节说明

  • sys.executable调用pip:确保使用的是当前脚本对应的Python解释器,避免多Python版本环境下装错地方。
  • 加入webdriver-manager:Selenium需要对应浏览器的驱动(比如ChromeDriver),这个库能自动检测浏览器版本并下载匹配的驱动,完全不用用户手动下载配置,大幅降低使用门槛。
  • 末尾的input():Windows下双击.py文件运行时,执行完会直接关闭命令行窗口,加这个能让用户看到执行结果,不会一脸懵。

方法2:配合requirements.txt批量安装

如果依赖比较多,或者需要固定版本,可以把依赖写在requirements.txt里,然后脚本里读取这个文件批量安装。

比如requirements.txt内容:

selenium==4.15.0
webdriver-manager==4.0.1

然后脚本里的安装逻辑改成:

def install_from_requirements():
    try:
        with open("requirements.txt", "r") as f:
            packages = [line.strip() for line in f if line.strip() and not line.startswith("#")]
        subprocess.run(
            [sys.executable, "-m", "pip", "install", "-r", "requirements.txt"],
            check=True
        )
        print("所有依赖安装完成!")
    except FileNotFoundError:
        print("未找到requirements.txt文件,请检查路径!")

这种方式更适合依赖复杂的场景,方便统一管理版本。

不管用哪种方法,只要分析师的电脑上预先装了Python,双击脚本就能自动搞定所有依赖,直接运行核心逻辑,完全不用他们懂命令行或者Python环境配置~

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

火山引擎 最新活动