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

时间:2015-11-20 07:47:26

标签: python import flask alembic

我正在尝试研究如何在烧瓶中使用蒸馏器,我想在烧瓶应用中导入一个方法:

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__)

我想在create_app中导入env.py

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

对此有何想法?

3 个答案:

答案 0 :(得分:4)

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

使用解决方案2 @ tomasz-jakub-rup建议,你可以像

一样执行
$ PYTHONPATH=. alembic upgrade head

你应该得到你的结果。

答案 1 :(得分:2)

我想你试图运行

python env.py

在这种情况下,您的app目录不在PYTHONPATH

soution 1

从父目录运行应用程序:

python alembic/env.py

解决方案2

在运行应用

之前设置PYTHONPATH
PYTHONPATH=/path/to/parent/dir python env.py

修改

我读到了alembic。正如@mrorno所说:

PYTHONPATH. alembic upgrade head

答案 2 :(得分:0)

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