我在学习烧瓶。使用sqlalchemy进行orm和alembic进行迁移,并进行以下操作:http://alembic.readthedocs.org/en/latest/autogenerate.html
每当我传递命令“alembic自动生成-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发布于 2015-05-24 20:07:44
运行alembic命令时,应用程序包不在Python的模块路径中。所以不能进口。解决这一问题的最简单方法是使用诸如瓶迁移或瓶-Alembic这样的扩展来为您处理迁移环境的设置。这两个扩展都要求您使用瓶-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 .安装包。那么您的包就会以“正确”的方式在路径上运行,就好像它实际上已经安装了一样。
发布于 2017-04-08 13:47:31
你应该使用export PYTHONPATH='.'
发布于 2020-02-03 18:02:48
您需要将绝对路径添加到您的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 ~/.zshrchttps://stackoverflow.com/questions/30427654
复制相似问题