2013-12-20 9 views
11

昨夜対明示的な、私は私の__init__.pyPythonのモジュール輸入は - 私のMac上で作業するときに暗黙の相対的な輸入

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' 

私のプロジェクトのレイアウトが

ルート
です| _api_helpers
        |
   を_modules |     __bin    無効な項目です。
        |     response_utils.py
    | _backend_providers        
|     __bin     MongoProvider.py
        |     Settings.py
    | _route_handlers        
|     __bin     Route_Handlers
|     app.py

何が原因でしょうか?私が見なければならない構成ファイルがありますか?

+0

何Pythonのバージョンこのですか? –

+0

Windowsは3.3.3を使用しています。私は自分のMacに何が入っているのか分かりません。最近出荷されているものは何でも。 – William

+0

さらに詳しい情報を提供できますか? Windowsの例外と同様?あなたはプロジェクトのファイルレイアウトですか? –

答えて

7

まあ、PEP-8に従ってセクションインポート:

暗黙の相対的な輸入が使用すべきではありませんし、Pythonで削除された3

のPython 3.3が作って、あなたの問題の原因1つであるので明示的な輸入親族のモジュール、私はこれが状況を説明すると仮定します。おそらく、MacではPython 2.xを使用していることでしょう。

プロジェクトのファイル配信を見ると、Settings.pyMongoProviderは確かに相対的なモジュールです。これは、インポート・システムがモジュールを見つけることができないためのPython 3で暗黙の相対的な輸入の除去は、あなたのトラブルを引き起こして1であることを意味します

ImportError: No module named 'MongoProvider' 
2

あなたのMacのPythonバージョンが2.xで、あなたのウィンドウのPythonが3.xであるようです。

モジュールtkinter(Python 2.xのTkinter)を使用する前に同じ問題が発生しました。

私たちはXXX.xxx import xxxからインポートする必要があるようです...●﹏●

なぜ、デザイナーがPythonに調整しているのか分かりません。

関連する問題