执行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确认配置生效,方便排查:
执行Alembic命令时查看输出的current = os.path.dirname(os.path.realpath(__file__)) parent = os.path.dirname(current) sys.path.append(parent) # 新增打印语句,确认路径是否被正确加入 print("Current sys.path:", sys.path)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
相关产品推荐
相关产品推荐

