2016-07-25 13 views
2

code_parsingパッケージをPython 3.2でインポートするとエラーが発生します。Python 3でImportError、Python 2.7でうまく動作しました

from ada import * 
try: 
    from c import * 
except ImportError: 
    # can happen if ply.lex is not available 
    pass 

私のモジュールをインポートし、私はこのエラーを取得する:

ディレクトリcode_parsing

code_parsing/__init__.py 
code_parsing/ada.py 

__init__.pyは含まれています(irrelvantここでは、あまりにもいくつかの他、しかし)PYTHONPATH内にあり、次のファイルが含まれてい

>>> import code_parsing 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "K:\CODE\pythonlib\code_parsing\__init__.py", line 1, in <module> 
    from ada import * 
ImportError: No module named ada 

Wi同じpython 2.7と同じマシン上で動作します。

いくつかの精度:

  • その他が同じdirectory/__init__.py構造作業罰金を使用して同じディレクトリにインポートします。
  • ada.pyは純粋なpythonファイルです。特別なコンパイル済み/ cython/.pydのものはありません。

答えて

4

Python 3はの絶対インポートを使用します。未修飾の名前は最上位モジュールとしてインポートされます。

トップレベルのadaモジュールがありません。以下は動作しますので、あなたは代わりにcode_parsing.adaモジュールを持っている:

from code_parsing.ada import * 

または明示的な「ローカルパッケージ」参照を使用します。

from .ada import * 

あなたがでPythonの2で同じ動作を強制することができます

from __future__ import absolute_import 

詳細はPEP 328 – Imports: Multi-Line and Absolute/Relativeを参照してください。

関連する問題