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行】