2017-12-07 3 views
0

インポートエラーを排除するための基本的な解決策はありますか?アプリケーションフォルダ/ファイルナビゲーションを有効にしようとするPython

パッケージ(ディレクトリ)及びモジュール(ファイル)アプリケーションの構造:

root\code\ 
    __init__.py 
    nav.py 
    resource.txt 

root\code\mkts\goog\ 
    __init__.py 
    update_goog.py 

root\code\mkts\yhoo\ 
    __init__.py 
    update_yhoo.py 

root\mkts\goog\data\ 
    DJIA.csv 

root\mkts\yhoo\data\ 
    DJIA.csv 

root\mkts\goog\human\ 
    DJIA.txt 

root\mkts\yhoo\human\ 
    DJIA.txt 

Nav.py(いくつかの関連するコード)

import os 

this_path = os.path.abspath(__file__) 
code = os.path.split(this_path)[0] # DO NOT put os.sep here! 
root = os.path.split(code)[0] + os.sep 
code = os.path.join(root,'code' + os.sep) 

mkts = os.path.join(root,'mkts' + os.sep) 

mkts_goog = os.path.join(mkts,'goog' + os.sep) 
mkts_goog_data = os.path.join(mkts_goog,'data' + os.sep) 
mkts_goog_human = os.path.join(mkts_goog,'human' + os.sep) 

if __name__ == '__main__': 
    # print(test()) 

update_goog.py(関連インポートテストコード)

import nav 

print(nav.mkts_goog_data) 

「python update_goog.py」を実行するとコマンドライン私はディレクトリroot \ mkts \ goog \ data \の代わりにPython 3.6が 'nav'という名前のモジュールがないImportErrorをスローします。私は関連する記事の束を読んだが、私の特定の問題を解決するための最良の基本的なオプションを決定することはできません。私は単純なものを見逃しているかもしれませんし、過度に複雑な解決策を調理したくないかもしれません。

答えて

0

モジュールは、モジュールgoogの上のいくつかのレベルです(navはその "祖父"です)。そのため、Pythonの方法を使って公式のパッケージング構造を設定する必要があります。おそらくローカルのpip installpython setupなどのようなものが含まれます。

チェックアウトPyPA's Packaging and Distributing Projects。 「配布」部分は無視できますが、残りの部分は関連しています。

私は実際にはリンクを与えていることは分かっていますが、これはノーではありませんが、答えはかなり長く複雑で、そのページと同様のページで非常によく捕捉されます。

関連する問題