2016-10-25 8 views
5

からサブモジュールやサブパッケージをインポートすると、私の問題を示していたファイル構造でありますのは、私が持っているとしましょう:Pythonは:<code>main_package</code>の<code>__init__.py</code>内</p> <pre><code>/main_package/ __init__.py script1.py sub_package/ __init__.py model.py </code></pre> <p>:私はまだここに、パッケージを作成する方法を把握しようとしている同じパッケージ

import main_package.script1 
... 

そしてscript1.py内の私が持っている:

from sub_package import model 
... 

これは動作しません。私はmain_packageをインポートしようとすると、私は、呼び出しの次のセットでエラーが発生します:import main_package.script1 - >from sub_package import model

どうやらscript1.pyfrom sub_package import modelは動作しません。

私は次のことを試してみました:

from main_package.sub_package import model

from . import sub_package.model

from .sub_package import model

そしてそれらのどれも動作しません。申し訳ありませんが、どこかで愚かな間違いをしていますが、問題を解決する方法は何ですか?


UPDATE:[OK]を何人かの人々がこの問題が発生した正確にどのように尋ねたので、私は私が取得し、私の実際の構造と手順だ実際のエラーメッセージを投稿します。申し訳ありませんが、名前が上から変更されました。ここで

がエラーを起こすパッケージの私の本当のパッケージ構造である:私は、端末(すなわちipython script.py [args])でscript.pyを実行

script.py 
/MCMC2/ 
    __init__.py 
    main_script.py 
    ExoData.py 
    Models/ 
     __init__.py 
     model_main.py 

と、次のエラーメッセージが表示されます(私は、問題の後に来るすべてを消去しましたそれを明確にするために...に置き換えました)。

ImportError        Traceback (most recent call last) 
/home/usr/script.py in <module>() 
     1 import pymc 
----> 2 from MCMC2 import ExoData 
     ... 

/home/usr/MCMC2/__init__.py in <module>() 
     ... 
----> 4 import MCMC2.main_script 
     ... 

/home/usr/MCMC2/main_script.py in <module>() 
     1 try: from Models import model_main 
----> 2 except: from .Models import model_main 
     ... 

/home/usr/MCMC2/Models/__init__.py in <module>() 
----> 1 import Models.model_main 
     ... 

ImportError: No module named 'Models' 

モデルは間違いな方法で存在します。

+1

'.sub_packageインポートからどのようなエラーを与えるmodel'のでしょうか? – vaultah

+1

あなたは 'script1.py'の実行方法について言及していません。他のプログラムからインポートされているのですか、スクリプトとして直接実行されていますか? 'main_package/__ __ initで – tdelaney

+1

が。から'やっpy'。輸入script1'と.sub_package輸入model'から ''やっmain_package/script1.py'、それは私のために動作します。あなたはどのバージョンのpythonを持っていますか?テストを実行するときの現在のディレクトリは何ですか?私はパッケージが正しく見つかったように 'main_package'の親にいました。 – tdelaney

答えて

0

[OK]を、私が全体のパッケージ構造で混乱したようです。更新構造を参照する - それは私もfrom . import model_mainを必要として機能するためにモデル__init__.pyファイルに私が... import Models.model_mainなどとして輸入をしていました。途中で助けてくれてありがとう。

関連する問題

 関連する問題