2016-07-15 3 views
-1

Macbookでプロジェクトをやっていますが、そのシステムはOS X 10.11.5です。私は、Python 3.5を使用してa.pyでこの__init__.pyが入っていてもパッケージエラーではありません

rec-par/ 
    rec/ 
     __init__.py 
     cle/ 
      __init__.py 
      c.py 
     par/ 
      __init__.py 
      b.py 
     util/ 
      __init__.py 
      a.py 

のようなディレクトリがimport

from rec.par.b import * 

などがあり、それは 'No module name rec.par , rec is not a package'のようなエラーを得ていました。 sys.pathに 'rec-par'というパスを追加しました。 cle/c.pyには同じインポートコマンドでエラーはありません。

質問How to fix "Attempted relative import in non-package" even with __init__.py、 をpython3 -m a.pyとしました。しかし、それは動作しませんでした。

ここに欠けているものはありますか?

+0

トップレベルのフォルダ(またはインポートパスの他の場所)に 'rec.py'ファイルがありますか?例外メッセージは、何かが 'rec'と思っていることを暗示しているようですが、正しいものではありません。 – Blckknght

答えて

0

コード内のモジュールは "rec-par"と呼ばれますが、インポートしようとすると "rec.par"が参照されます。

+1

'rec-par /'はプロジェクト全体のルートパスです。私はそれをPYTHONPATH(私は 'cle /'などの他のディレクトリのインポートから使用することができます)を追加しました。 'rec /'はサブディレクトリであり、 'rec-par /'、 'par/'は' rec/'のパッケージです。 'rec.par'はPYTHONPATH rec-parのようなものです。あなたは2つの異なるものです – karajan1001

0

OK、私はこの問題を解決しました。ディレクトリutil/__pycache__ ディレクトリパッケージと同じ名前のファイルpar.cpython-35.pyがありました。これは混乱の原因となりました。それが削除された後、問題は解決しました。

関連する問題