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

AzureDevOps Windows代理中Python同目录模块导入失败求助

解决Windows代理下Python同目录模块导入失败问题

问题重现

Linux代理上运行正常的Python脚本,在Windows代理执行时抛出ModuleNotFoundError: No module named 'utility_functions',脚本结构为utils文件夹下包含setup.py与utility_functions.py两个文件。

解决方案

方案1:在setup.py中添加路径处理

在setup.py最开头插入以下代码,强制将脚本所在目录加入Python的模块搜索路径:

import sys
import os
# 将当前脚本所在目录添加到模块搜索路径的最前面
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

from utility_functions import codeql_language_identifiers, is_traced_language
# 后续原有代码保持不变

方案2:修改Azure DevOps执行命令

调整执行命令,先切换到utils目录再运行脚本,确保Python的当前工作目录与模块所在目录一致:

cd E:\vsts\agent1\_work\1268\appsec-ado\utils && E:\vsts\agent1\_work\_tool\Python\3.10.5\x64\python.exe codeql_setup.py

原因分析

Linux环境下直接运行脚本时,Python会自动将脚本所在目录添加到sys.path(模块搜索路径);但Windows代理执行命令时,当前工作目录可能并非脚本所在的utils文件夹,导致Python无法定位到同目录下的utility_functions.py模块。上述两种方案分别从代码层面和执行环境层面修复了路径匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:55:05