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

启动Telegram Bot时出现ModuleNotFoundError: No module named 'bin.strings'求助

解决ModuleNotFoundError: No module named 'bin.strings'问题

问题场景

启动Telegram机器人执行python3 main.py时触发如下错误:

Traceback (most recent call last):
  File "/home/tg_bot/main.py", line 6, in <module>
    import database
  File "/home/tg_bot/database.py", line 4, in <module>
    from bin.strings import get_now_date
ModuleNotFoundError: No module named 'bin.strings'

该程序此前运行无异常,问题突然出现。bin/strings.py中的get_now_date函数示例:

def get_now_date():
    """
    Получение текущей даты
    :return:
    """
    now_data = datetime.now()
    return now_data.strftime("%d/%m/%Y %H:%M:%S")

排查与解决步骤

  • 确认目录结构与包标识
    检查项目根目录/home/tg_bot下的结构,必须保证bin是合法的Python包:

    • bin文件夹下必须存在__init__.py文件(可以是空文件,用于告诉Python这是一个可导入的包)
    • 正确目录结构:
      /home/tg_bot/
      ├── main.py
      ├── database.py
      └── bin/
          ├── __init__.py
          └── strings.py
      
  • 检查运行时工作目录
    执行python3 main.py时,当前工作目录必须是项目根目录/home/tg_bot,否则Python无法找到bin包:

    • 直接切换到根目录运行:
      cd /home/tg_bot && python3 main.py
      
    • 或者在main.py开头添加代码,强制将项目根目录加入Python路径:
      import sys
      import os
      # 将项目根目录添加到Python搜索路径
      sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
      
  • 排查文件权限与命名冲突

    • 检查bin目录及strings.py的权限,确保Python进程有读取权限:
      chmod -R 755 /home/tg_bot/bin
      
    • 确认项目中没有其他同名的strings.py文件,避免和自定义包或标准库模块冲突。
  • 验证虚拟环境(若使用)
    如果之前使用了虚拟环境,确认当前运行时已激活正确的环境:

    • 以venv为例,激活命令:
      source /home/tg_bot/venv/bin/activate
      

    环境切换可能导致Python路径变化,引发模块找不到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:15:49