在我试图导入from database import *
的migrations / env.py文件中
但显示no module name database
我尝试了from ..database imprt *
并在pythonpath
中添加了文件,但没有运气:(
答案 0 :(得分:2)
您的目录结构对我来说有点可疑。 alembic.ini
通常不应该作为包装的一部分(包装时默认情况下,setuptools不会将其拾取)。我认为最好将其放置在项目根目录中。
像这样的事情会更标准:
├── alembic.ini
├── migrations
│ ├── env.py
│ ├── script.py.mako
│ └── versions
│ └── ...
├── package_name
│ └── database
│ ├── __init__.py
│ └── ...
│ └── models
│ └── __init__.py
│ └── ...
├── README.md
└── setup.py
└── ...
现在,仅凭这一项将无法使database
中的env.py
可用。为此,您必须以某种方式使您的包可发现。通常,这可以通过将package_name
安装到某些virtualenv中来完成。在那种环境下,您可以在from package_name.database import *
中使用env.py
。
答案 1 :(得分:0)
迁移需要知道从哪里导入,它们要么属于同一软件包:
A:
移民
数据库
初始化 .py
然后在迁移中:
来自A.database。无论导入什么内容
或者您将它们作为软件包单独安装在virtualenv中: 然后它们中的每个都相互依赖,但是由于已安装它们,因此可以调用它们:
database / setup.py migrations / setup.py
然后两者都已安装,并且migrations / env.py可以调用已安装的软件包数据库