我有一个像这样的包
fsb
├── core.py
├── __init__.py
└── view_boosters
├── __init__.py
├── responses.py
此处使用的Python版本是Python 2.7
response.py模块有一个名为error_json
以前,它的结构方式是将response.py模块放在根文件夹中-因此,有很多客户端代码可以导入像这样的功能
from fsb.responses import error_json
现在,新结构要求将所有客户端导入更改为
from fsb.view_boosters.responses import error_json
我希望避免对数百个文件进行此更改。因此,我想到了将响应模块导入fsb。 init .py文件本身
fsb/__init__.py
from .view_boosters import responses
现在,当我尝试从这样的客户端代码访问时,出现模块未找到错误
In [3]: from flask_sqlalchemy_booster.responses import error_json
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-3-90d5505228fb> in <module>()
----> 1 from flask_sqlalchemy_booster.responses import error_json
ImportError: No module named responses
虽然单独导入模块还是可以的
from flask_sqlalchemy_booster import responses
以上工作正常。
这是怎么回事?为什么后者可能,而前者却不可能?如果问题出在python无法在其sys路径中识别响应模块,那么在第二种情况下它也应该抛出错误。但是在第二种情况下它能够识别响应模块,但在第一种情况下无法识别响应模块。
我尝试将fsb.__init__.py
更改为类似的内容
import view_boosters.responses as responses
这也没有任何效果。
使用python 2.7的导入系统无法实现上述目标吗?