Telegram Bot项目导入根目录bot变量出现ImportError求助
解决Telegram Bot模块导入错误问题
问题背景
项目结构:
bot.py handlers/ create_ticket.py
在create_ticket.py中尝试用from ..bot import bot导入bot变量时,出现错误:
ImportError: attempted relative import beyond top-level package
可行解决方案
方案1:调整运行方式并添加包标识文件
- 在项目根目录和
handlers目录下都创建空的__init__.py文件,让Python识别这是一个包结构:
bot.py __init__.py handlers/ __init__.py create_ticket.py
- 不要直接运行
create_ticket.py,而是从项目根目录的上层目录,用模块方式启动:
python -m your_project_name.handlers.create_ticket
或者在bot.py中导入create_ticket模块,直接运行bot.py,此时相对导入会生效:
# bot.py中添加 from handlers.create_ticket import xxx
方案2:手动添加项目路径到sys.path
在create_ticket.py的最开头添加以下代码,把项目根目录加入Python的模块搜索路径,之后就可以直接导入bot:
import sys import os # 获取项目根目录路径并添加到sys.path sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from bot import bot
方案3:使用绝对导入
如果你的项目根目录有明确的名称(比如telegram_bot),可以直接用绝对导入:
from telegram_bot.bot import bot
需要确保项目根目录在Python的sys.path中,或者用pip install -e .把项目安装为可编辑包,这样Python就能识别这个包。
内容的提问来源于stack exchange,提问作者jetgreen
相关产品推荐
相关产品推荐

