【问题标题】:Relative imports in Python Flask don't seem to workPython Flask 中的相对导入似乎不起作用
【发布时间】:2018-01-24 03:55:20
【问题描述】:

我的 Flask 项目有以下目录结构

├── API
│   ├── __init__.py
│   ├── controllers.py
│   ├── models.py
│   └── test
│       ├── first_test.py
│       
├── config.py
├── requirements.txt
├── run.py
└── setup.py

我的setup.py 如下所示:

from setuptools import setup

    setup(
        name='project_name',
        packages=['API'],
        include_package_data=True
    )

我很担心如何将modelsapp (__init__) 导入我的测试文件 (first_test.py)。

所以,到目前为止我已经尝试过

from project_name.API import app

gives from project_name.API import app
E   ImportError: No module named project_name.API

from ..API import app
from ..API import app
E   ValueError: Attempted relative import in non-package

from .. import app
from .. import app
E   ValueError: Attempted relative import in non-package

我不知道如何导入文件。另外,我使用py.test API/test/first_test.py 运行测试文件

【问题讨论】:

  • 我认为好的方法是在github上下载一些flask骨架。我更喜欢 RealPython 的“Flask-Skeleton”。一切都在那里工作,你可以很容易地找到如何正确地做到这一点。

标签: python flask import python-import valueerror


【解决方案1】:

一种解决方案是在项目的根目录下创建一个setup.py 文件。

然后,您可以使用 pip 安装您的应用程序

pip install --editable .

通过这种方式,您可以从 first_test.py 文件中导入您的应用程序。

from API import app

当然,最后一个 import 语句取决于应用对象所在的位置。

有关更多信息,请参阅烧瓶存储库中的 minitwit 示例。

minitwit

希望,它会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 2014-10-31
    • 2018-07-10
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多