Python 3.x 烧瓶和鼻的相对进口与绝对进口

Python 3.x 烧瓶和鼻的相对进口与绝对进口,python-3.x,flask,nose,Python 3.x,Flask,Nose,我有一个Flask应用程序,它具有以下目录结构: ├── README.md ├── __init__.py ├── constants.py ├── businesspackage │   ├── README.md │   ├── __init__.py │   ├── __pycache__ │   ├── detection │   ├── flagging_spec.txt │   └── tests

我有一个Flask应用程序,它具有以下目录结构:

    ├── README.md
    ├── __init__.py
    ├── constants.py
    ├── businesspackage
    │   ├── README.md
    │   ├── __init__.py
    │   ├── __pycache__
    │   ├── detection
    │   ├── flagging_spec.txt
    │   └── tests
    ├── requirements.txt
    ├── run.py
    └── tests
        ├── __init__.py
        ├── __pycache__
        └── test_api.py
detection
\uuuu init\uuuuuuuuuuupy
中,我已经导入了必要的类,这样我就可以从顶级模块导入类,而不需要给出模块中每个
.py
文件的完整路径

我试图从
detection
内部导入一些类
run.py
,但遇到以下错误:当我尝试使用
python3 run.py从顶级目录运行Flask应用程序时:

    Traceback (most recent call last):
    File "run.py", line 9, in <module>
        from .businesspackage.detection import AdsDetection
    SystemError: Parent module '' not loaded, cannot perform relative import
然后,我可以运行我的Flask服务器而不出现导入错误,但是,我的导入对于nose test runner来说会中断。我使用nose 1.3.7使用
nosetests
命令运行测试。我如何定义导入,使它们既适用于Flask服务器,也适用于我的测试

编辑:

businesspackage.\uuuu init\uuuuu.py
如下所示:

    from .business_detection import BusinessDetector

因此,出于某种奇怪的原因,我在删除了基本目录中的
\uuuu init\uuuuu.py
文件后,成功地实现了绝对导入:即,我的目录结构如下所示:

├── README.md
├── __init__.py
├── constants.py
├── businesspackage
│   ├── README.md
│   ├── __init__.py
│   ├── __pycache__
│   ├── detection
│   ├── flagging_spec.txt
│   └── tests
├── requirements.txt
├── run.py
└── tests
    ├── __init__.py
    ├── __pycache__
    └── test_api.py

我想我应该在看到这里的一个答案后再试试。所以现在,我所有的包都使用绝对导入

你能添加你的业务包吗?\uuu init\uuuuy.py看起来像什么?@AllieFitter-sure,继续并将其添加到问题中。
├── README.md
├── __init__.py
├── constants.py
├── businesspackage
│   ├── README.md
│   ├── __init__.py
│   ├── __pycache__
│   ├── detection
│   ├── flagging_spec.txt
│   └── tests
├── requirements.txt
├── run.py
└── tests
    ├── __init__.py
    ├── __pycache__
    └── test_api.py