2012-02-05 10 views
6

私はこのようになります(それはこのように見えるように持っている)階層を持つようにしたいインポートモジュール

main_folder\ 
    main.py 
    domain_sub_directory\ 
     __init__.py 
     domain.py 
    ui_sub_direcotory\ 
     __init__.py 
     menu.py 

main.pyを実行しますが、menu.pyからdomain.pyにアクセスします。どうやってやるの ?

import domain_sub_directory.domain 

しかし、UIモジュールは、ドメインのモジュールが表示されません:UIの

import ui_sub_directory.ui 

この:

私がメインでこれをやりました。

私は間違っていますか?

私は一緒に作業しているクラスをインポートする必要がありますか?これとの違いは何ですか:

from x import y 

*編集*私はからインポートする理解していない人のための

folder1 /folder2 /folder3 /module1 

私はこれをインポートする:

folder1 /folder2 /module2 
+0

'import ui_sub_directory.ui()'はすでに構文とロジックが間違っています。 – Gandaro

+0

ほとんどこれの複製: http://stackoverflow.com/questions/8951255/import-script-from-a-parent-directory –

+1

私はあなたに「リンゴと梨の違いは何ですか?」と尋ねるかもしれません。同様の質問である。彼らは完全に異なっています。最初のものは間違っていて、もう一つはそうではありません。 [インポートについて読む](http://docs.python.org/tutorial/modules.html)をご覧ください。 – Gandaro

答えて

7

あなたはimport文の違いを尋ねました。部分的にオブジェクトがインポートされるネームスペースの問題と、インポートされるコードの正確な量を制限する方法です。

import os 
from os import path 

osとos.pathの両方がモジュールです。最初のモジュールはosモジュール全体とそのすべてのサブモジュールをインポートします。これはあなたが必要以上のものになる可能性があり、大きなライブラリは不必要なオーバーヘッドになる可能性があります。 os.path

2番目の形式は、パスモジュールのみを選択的にインポートする方法です。さらに、os名前空間の下にコードを入力するのではなく、今すぐルートレベルでpathとして存在します。

このリンクImport Script from a Parent Directoryはあなたが知る必要があるすべてを教えていますが、ここではいくつかのより具体的な情報である:

# this will make your package available on your pythonpath 
sys.path.append("/path/to/main_folder") 

次に、あなたのさまざまなスクリプトのような、main_folder下に対する他のモジュール全てを参照することができます。

from ui_sub_direcotory import menu 

from domain_sub_directory import domain 

import main 

これらはすべてパッケージ内の有効なインポートです。

+0

答えが出ない場合は少なくともリンクを投稿してください。自分の考えを伝えるのに十分な英語がないので、検索できません。私は通常の輸入品を見つけましたが、 "逆輸入品"はありませんでした。少なくとも私が推測する第二の部分に感謝します。 – Kalec

+0

リンクはすでにコメントに掲載されています。しかし、私はいくつかの助けを借りて更新しました – jdi

+0

これは非常に多くの簡単な問題を抱えて申し訳ありませんが、私はこのエラーを受け取ります: "SyntaxError:(unicode error) 'unicodeescape'コーデックはバイトを位置13-15でデコードできません:シーケンス "私のパスはどのように見えますか? D:\ Info \ Eclipse Workspace \ Test \ Test_src \ ui?か否か ?私はそれを得ることはありません – Kalec

関連する問題