使用 Alembic 时导入应用程序引发 ImportError
Importing app when using Alembic raises ImportError
我正在研究如何在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
对此有什么想法吗?
我猜你想 运行
python env.py
在这种情况下,您的应用程序目录不在 PYTHONPATH
.
解决方案 1
运行 来自父目录的应用程序:
python alembic/env.py
解决方案 2
在 运行 应用前设置 PYTHONPATH
PYTHONPATH=/path/to/parent/dir python env.py
编辑
我读到了 alembic
。正如@mrorno 所说,只需在 运行ning alembic:
之前设置 PYTHONPATH
PYTHONPATH=. alembic upgrade head
alembic
只是尝试加载您的 env.py
源代码。它不在您的包中,因此无法访问您的 app
模块。
使用解决方案2@tomasz-jakub-rup建议,你可以像
一样执行
$ PYTHONPATH=. alembic upgrade head
你应该得到你的结果。
创建文件 .env
并插入 PYTHONPATH=.
我正在研究如何在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
对此有什么想法吗?
我猜你想 运行
python env.py
在这种情况下,您的应用程序目录不在 PYTHONPATH
.
解决方案 1
运行 来自父目录的应用程序:
python alembic/env.py
解决方案 2
在 运行 应用前设置 PYTHONPATH
PYTHONPATH=/path/to/parent/dir python env.py
编辑
我读到了 alembic
。正如@mrorno 所说,只需在 运行ning alembic:
PYTHONPATH
PYTHONPATH=. alembic upgrade head
alembic
只是尝试加载您的 env.py
源代码。它不在您的包中,因此无法访问您的 app
模块。
使用解决方案2@tomasz-jakub-rup建议,你可以像
一样执行$ PYTHONPATH=. alembic upgrade head
你应该得到你的结果。
创建文件 .env
并插入 PYTHONPATH=.