昨晚,在Mac上工作时,我在__init__.py
的
from MongoProvider import MongoProvider
from Settings import Settings
等等。我不确定那台机器上的Python版本。知道后,我将使用该信息来编辑问题。
如今,在另一台Windows机器上工作,并使用Python 3.3.3,我的模块导入中断了。通过添加显式相对导入(添加前导点),我可以解决此问题。
from .MongoProvider import MongoProvider
from .Settings import Settings
我收到的跟踪是:
Traceback (most recent call last):
File "app.py", line 5, in <module> from modules.route_handlers import Route_Handlers
File "C:\Users\willb\bearded-dubstep\modules\route_handlers\Route_Handlers.py", line 9, in <module> from modules.backend_providers import Settings
File "C:\Users\willb\bearded-dubstep\modules\backend_providers\__init__.py", line 1, in <module> from MongoProvider import MongoProvider
ImportError: No module named 'MongoProvider'
我的项目布局是
根
| _modules
| _api_helpers
| __init__.py
| InvalidUsage.py
| response_utils.py
| _backend_providers
| __init__.py
| MongoProvider.py
| Settings.py
| _route_handlers
| __init__.py
| Route_Handlers
| app.py
有什么想法会导致这种情况吗?是否有我应该查看的配置文件?
好吧,根据PEP-8进口部分:
绝对不要使用隐式相对导入,并且在Python 3中已将其删除。
由于Python 3.3会给您带来麻烦,从而使您显式导入亲戚模块,因此我认为这可以解释这种情况。可能是因为在Mac上安装了Python 2.x,这就是它在那里工作的原因。
查看您项目的文件分发,Settings.py
并且MongoProvider
确实是相关模块。这意味着在Python 3中删除隐式相对导入是一种麻烦,因为导入系统无法找到该模块:
ImportError: No module named 'MongoProvider'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句