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

Python项目中通过相对路径(../)访问chromedriver.exe失败的问题排查

解决相对路径访问chromedriver.exe的问题

你遇到的问题是因为**os.chdir('..')改变当前工作目录后,你的相对路径计算出现了偏差**。我给你拆解下原因,再提供几种可靠的解决方案:

问题根源

你原本的目标是从test_function_pack.py所在目录向上两级找到drivers/chromedriver.exe,但先执行os.chdir('..')已经把当前工作目录向上移动了一级。此时再用../../drivers/chromedriver.exe,相当于总共向上跳转了三级,自然找不到目标文件。

推荐解决方案(不修改工作目录,更可靠)

最稳妥的方式是基于脚本文件自身的路径来构建相对路径,这样不管当前工作目录是什么,都能准确定位文件。

方法1:使用os.path模块

import os
from selenium.webdriver.chrome.service import Service

# 获取当前脚本文件所在的绝对目录
script_directory = os.path.dirname(os.path.abspath(__file__))
# 向上两级目录,再拼接drivers和chromedriver的路径
driver_path = os.path.join(script_directory, '../../drivers/chromedriver.exe')
# 标准化路径(自动处理多余的../或/,避免路径混乱)
driver_path = os.path.normpath(driver_path)

service = Service(driver_path)

方法2:使用pathlib(Python 3.4+,语法更直观)

pathlib是Python推荐的现代路径处理方式,代码可读性更强:

from pathlib import Path
from selenium.webdriver.chrome.service import Service

# 获取当前脚本的绝对路径
script_path = Path(__file__).resolve()
# 向上两级目录 → 进入drivers文件夹 → 定位到chromedriver.exe
driver_path = script_path.parent.parent / "drivers" / "chromedriver.exe"

service = Service(str(driver_path))

如果你非要用os.chdir的话

如果你坚持要修改工作目录,只需调整相对路径(只需要再向上一级,而非两级):

import os
from selenium.webdriver.chrome.service import Service

# 当前工作目录上移一级
os.chdir('..')
# 此时仅需再向上一级就能找到drivers目录
service = Service(r'../drivers/chromedriver.exe')

不过这种方法不推荐,因为修改全局工作目录可能会影响其他文件操作的路径定位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:42:45