【问题标题】:Importing app when using Alembic raises ImportError使用 Alembic 时导入应用程序会引发 ImportError
【发布时间】:2016-02-22 15:11:45
【问题描述】:

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

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

对此有什么想法吗?

【问题讨论】:

  • 尝试更改您的包(app)名称?

标签: python import flask alembic


【解决方案1】:

我猜你正在尝试运行

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

【讨论】:

  • 我正在研究如何在烧瓶中使用alembic,所以我运行命令:alembic upgrade head
【解决方案2】:

创建文件.env并插入PYTHONPATH=.

【讨论】:

    【解决方案3】:

    alembic 只是尝试加载您的env.py 源代码。它不在您的包中,因此无法访问您的 app 模块。

    使用@tomasz-jakub-rup 建议的解决方案2,你可以像这样执行

    $ PYTHONPATH=. alembic upgrade head
    

    你应该得到你的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2021-12-24
      相关资源
      最近更新 更多