【问题标题】:Why is alembic not autogenerating?为什么alembic不能自动生成?
【发布时间】:2015-08-06 07:17:23
【问题描述】:

我正在学习烧瓶。使用 sqlalchemy 进行 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

【问题讨论】:

    标签: python flask sqlalchemy alembic


    【解决方案1】:

    当您运行 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__), '..')))
    

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

    【讨论】:

      【解决方案2】:

      你应该使用export PYTHONPATH='.'

      【讨论】:

        【解决方案3】:

        您需要将绝对路径添加到您的 alembic 文件夹所在的根目录。 例如:

        如果您当前的文件夹结构是:

         .
        ├── app
        │   ├── alembic
        │   │   ├── env.py
        │   │   ├── __pycache__
        │   │   ├── README
        │   │   ├── script.py.mako
        │   │   └── versions
        │   ├── alembic.ini
        │   ├── constants
        │   ├── core
        │   ├── enums
        │   ├── models
        │   ├── repository
        │   ├── routes
        │   ├── __init__.py
        │   ├── main.py
        

        并且您的应用的绝对路径为:

        /home/username/dev/app
        

        然后运行以下行在 ~/.bashrc 或 ~/.zshrc 中添加路径以进行本地开发并更新 env 变量。

        echo "export $PYTHONPATH=$PYTHONPATH:/home/username/dev/app" >> ~/.bashrc
        source ~/.bashrc
        

        echo "export $PYTHONPATH=$PYTHONPATH:/home/username/dev/app" >> ~/.zshrc
        source ~/.zshrc
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-03-10
          • 2012-06-26
          • 2020-11-05
          • 2013-06-16
          • 2013-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多