Wil*_*iam 12 python python-module python-import
昨晚,我的Mac上工作时,我成立了一些在我的模块导入__init__.py的
from MongoProvider import MongoProvider
from Settings import Settings
Run Code Online (Sandbox Code Playgroud)
我不确定那台机器上有什么版本的Python.一旦我拥有了该信息,我稍后将编辑该问题.
今天,在不同的机器上工作,这是Windows并使用Python 3.3.3,我的模块导入正在破坏.通过添加显式相对导入(添加前导点),我能够解决问题.
from .MongoProvider import MongoProvider
from .Settings import Settings
Run Code Online (Sandbox Code Playgroud)
我收到的痕迹是:
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'
Run Code Online (Sandbox Code Playgroud)
我的项目布局是
root
| _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
任何想法会导致什么?是否有我应该关注的配置文件?
Pau*_* Bu 10
那么,根据PEP-8进口部分:
永远不应该使用隐式相对导入,并且已经在Python 3中删除了.
由于Python 3.3是导致你麻烦的那个,让你明确导入亲戚模块,我认为这解释了这种情况.可能在Mac上你有Python 2.x,这就是它在那里工作的原因.
看你的项目的文件分发,Settings.py并且MongoProvider确实是相对的模块.这意味着在Python 3中删除隐式相对导入会导致您遇到麻烦,因为导入系统无法找到该模块:
ImportError: No module named 'MongoProvider'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4906 次 |
| 最近记录: |