为什么蒸馏器不能自动生成?

cha*_*arn 4 python sqlalchemy flask alembic

我正在学习烧瓶.使用sqlalchemy for orm和alembic进行迁移贯穿以下内容:http: //alembic.readthedocs.org/en/latest/autogenerate.html

每当我通过命令"alembic revision --autogenerate -m'name'"时,弹出这个错误.无论我做什么,我配置了config.py文件,但我想也许我正在以错误的方式配置env.py文件.或者出了点问题,因为我遵循了教程的每一步.

File "alembic/env.py", line 20, in <module>
from myapp.mymodel import Base
ImportError: No module named app.models




folder directory:
project/
       app/
          models.py
          views.py
          __init__.py
       alembic/
              versions
              env.py
       config.py
Run Code Online (Sandbox Code Playgroud)

dav*_*ism 14

运行alembic命令时,您的应用程序包不在Python的模块路径中.所以它无法导入.解决此问题的最简单方法是使用Flask-MigrateFlask-Alembic等扩展来处理为您设置迁移环境.这两个扩展都要求您使用Flask-SQLAlchemy.

如果您不想使用扩展,快速而又脏的方法是强制包含您的应用程序包的目录位于路径上.在env.py导入Base之前,添加

import os, sys
sys.path.insert(0, os.path.realpath(os.path.join(os.path.dirname(__file__), '..')))
Run Code Online (Sandbox Code Playgroud)

更好的解决方案是使用setup.py文件正确设置项目并以可编辑模式安装包:pip install -e ..然后你的包将以"正确"的方式在路径上,就像它实际安装一样.


小智 7

你应该使用export PYTHONPATH='.'