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

执行Alembic命令时出现ModuleNotFoundError: No module named 'data'求助

问题描述

env.py单独运行正常,但执行Alembic命令 alembic revision --autogenerate -m "create models" 时,抛出 ModuleNotFoundError: No module named 'data' 错误。

当前env.py中的路径配置代码:

import sys
import os
from logging.config import fileConfig

from sqlalchemy import engine_from_config
from sqlalchemy import pool

from alembic import context

current = os.path.dirname(os.path.realpath(__file__))
parent = os.path.dirname(current)
sys.path.append(parent)

from data import Base  # noqa: E402

目录结构:

mainfolder
└── migrations
    └── env.py

已尝试上述路径配置,但仅手动运行env.py有效,执行Alembic命令时仍报错。

解决方案

试试以下几种方法,按顺序排查:

  • 确认data模块的位置与结构
    确保mainfolder目录下存在data文件夹(需包含__init__.py文件,Python 3.3+虽支持命名空间包,但显式添加该文件兼容性更强),或者data.py文件。
  • 验证路径是否正确添加
    在env.py中添加路径后,打印sys.path确认配置生效,方便排查:
    current = os.path.dirname(os.path.realpath(__file__))
    parent = os.path.dirname(current)
    sys.path.append(parent)
    # 新增打印语句,确认路径是否被正确加入
    print("Current sys.path:", sys.path)
    
    执行Alembic命令时查看输出的sys.path列表,若mainfolder不在其中,直接指定绝对路径强制添加:
    # 替换为你的mainfolder实际绝对路径,比如Linux/macOS的/xxx/mainfolder,Windows的C:/xxx/mainfolder
    sys.path.append("/path/to/mainfolder")
    
  • 执行命令时临时指定PYTHONPATH
    无需修改env.py,在命令行执行时临时设置环境变量:
    # Linux/macOS
    PYTHONPATH=/path/to/mainfolder alembic revision --autogenerate -m "create models"
    
    # Windows cmd
    set PYTHONPATH=C:\path\to\mainfolder && alembic revision --autogenerate -m "create models"
    
    # Windows PowerShell
    $env:PYTHONPATH="C:\path\to\mainfolder"; alembic revision --autogenerate -m "create models"
    
  • 修改alembic.ini配置文件
    在alembic.ini中添加pythonpath配置项,指向mainfolder的绝对路径:
    [alembic]
    script_location = migrations
    pythonpath = /path/to/mainfolder
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:37:14