【发布时间】:2018-09-28 14:30:39
【问题描述】:
我的项目结构如下:
xxx
├── xxx
| ├── settings
| └── tests
| └── __init__.py
| └── conf.py
| └── xxx.py
| └── utils.py
这些是我在每个文件中的导入。
xxx.py
from xxx import utils, conf
from xxx.conf import BASE_DIR
conf.py
import os
import yaml
utils.py
import os
import shutil
from typing import List, Optional, Tuple, Dict, Union
import requests
当我运行我的应用程序时
python3 xxx.py
我收到以下错误:
ImportError: cannot import name 'utils' from 'xxx' (/Users/yyyyy/workscpace/xxx/xxx/xxx.py)
当我使用 pytest 运行我的测试套件时,我没有收到任何错误。
我尝试将导入更改为(因为这些文件是我的包中的模块):
import utils
import conf
在这种情况下,我可以正常运行我的应用程序,但在尝试运行 pytest 时出现以下错误
ModuleNotFoundError: No module named 'utils'
我做错了什么?
【问题讨论】:
-
__init__.py中有什么内容? -
没什么,是空的
-
除非你有一个非常、非常、非常好的理由来命名一个像父包一样的子包:不要。它可以避免很多的头痛。
-
顶部的“xxx”文件夹是项目根目录,而不是包。
标签: python python-import python-3.7