当前位置: 首页 > news >正文

Python import 机制与文件路径问题解析

Python import 机制与文件路径问题解析

  • 问题描述
  • 原因分析:
  • 解决方案:


今天在开发过程中,遇到一个路径文件,排查了一个多小时。。。
import 的路径问题,尤其是在不同模块之间调用时,可能会因为 相对路径错误 。

问题描述

目录结构:

Users/lpp/workspace/DevProject/04LLM应用开发学习/04 ReAct Agent/03 智能客服/
│── agentExecutor.py  # 主程序
└── tools/
    └── query_products_from_db.py  # 查询数据库的模块
    └── SportsEquipment.db  # SQLite 数据库文件

query_products_from_db.py 代码如下:

import sqlite3

def query_by_product_name(product_name):
    conn = sqlite3.connect("SportsEquipment.db")  # 直接使用相对路径
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM products WHERE product_name LIKE ?", ('%' + product_name + '%',))
    rows = cursor.fetchall()
    conn.close()
    return rows

在 agentExecutor.py 中调用:

from tools.query_products_from_db import query_by_product_name

print(query_by_product_name("篮球"))

执行 python agentExecutor.py 时,报错:
在这里插入图片描述

原因分析:

Python import 机制是基于 (当前工作目录)进行的,而不是以模块文件所在目录为基准。

运行 agentExecutor.py 时,Python 认为 “SportsEquipment.db” 是相对于 agentExecutor.py的执行目录(也就是当前目录),而不是query_products_from_db.py 所在的 tools/ 目录。因此,数据库文件未被正确找到。

解决方案:

在 query_products_from_db.py 中使用绝对路径
【第7行注释掉,新增3、4、8行】
在这里插入图片描述

相关文章:

  • vim:基础配置
  • vcredist_x64 资源文件分享
  • Mastercam出现提示“Mastercam提示没有许可证,你有激活码吗”的报错的解决方案
  • 计算机网络——详解TCP三握四挥
  • Linux软硬链接
  • SpringBoot 日志 与 门面模式(外观模式)
  • Anaconda安装(2024最新版)
  • Iceberg Catalog
  • AWS中使用CloudFront分发API Gateway
  • 自学微信小程序的第六天
  • 如何评估所选择的PHP后端框架的性能?
  • 【设计模式】单例模式|饿汉模式|懒汉模式|指令重排序
  • DockerでOracle Database 23ai FreeをセットアップしMAX_STRING_SIZEを拡張する手順
  • golang 内存对齐和填充规则
  • 【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码
  • uvm中的run_test作用
  • C语言基础要素(007):使用变量
  • 自然语言处理NLP入门 -- 第十节NLP 实战项目 2: 简单的聊天机器人
  • uniapp 系统学习,从入门到实战(六)—— 样式与布局
  • [思考记录]AI时代下,悄然的改变
  • 六安属于哪里/广州新塘网站seo优化
  • 万户做网站怎么样/网站推广代理
  • 用织梦做网站费用/百度指数查询手机版
  • 网站开发与建设方向/手机app推广平台
  • cms网站模板套用教程/关键词代发排名首页
  • b/s网站开发/nba最新排名东西部