Skip to main content
 首页 » 编程设计

python之使用 Alembic 时导入应用程序引发 ImportError

2025年05月04日18webabcd

我正在研究如何在 flask 中使用 alembic,我想在 flask 应用程序中导入一个方法:

tree . 
. 
├── README.md 
├── alembic 
│   ├── README 
│   ├── env.py 
│   ├── env.pyc 
│   ├── script.py.mako 
│   └── versions 
│       ├── 8f167daabe6_create_account_table.py 
│       └── 8f167daabe6_create_account_table.pyc 
├── alembic.ini 
├── app 
│   ├── __init__.py 
│   ├── main 
│   │   ├── __init__.py 
│   │   ├── errors.py 
│   │   ├── forms.py 
│   │   └── views.py 
│   ├── models.py 
│   └── templates 
│       ├── 404.html 
│       ├── 500.html 
│       ├── base.html 
│       ├── index.html 
│       └── user.html 
├── config.py 
├── data.sqlite 
├── manage.py 
└── requirements.txt 

在app/__init__.py中:

def create_app(config_name): 
  app = Flask(__name__) 

我想在 env.py 中导入 create_app:

from app import create_app 

但是当我运行命令 alembic upgrade head 时,错误显示如下:

  File "alembic/env.py", line 5, in <module> 
    from app import create_app 
ImportError: No module named app 

有什么想法吗?

请您参考如下方法:

我猜你想跑

python env.py 

在这种情况下,您的应用程序目录不在 PYTHONPATH 中。

解决方案1

从父目录运行应用程序:

python alembic/env.py 

解决方案2

在运行应用程序之前设置PYTHONPATH

PYTHONPATH=/path/to/parent/dir python env.py 

编辑

我阅读了关于 alembic 的内容。正如@mrorno 所说,只需在运行 alembic 之前设置 PYTHONPATH:

PYTHONPATH=. alembic upgrade head