python导入无法从一个模块到另一个模块

时间:2018-12-10 16:26:33

标签: python

我的结构如下 enter image description here

在我试图导入from database import *的migrations / env.py文件中 但显示no module name database
我尝试了from ..database imprt *并在pythonpath中添加了文件,但没有运气:(

2 个答案:

答案 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可以调用已安装的软件包数据库

相关问题