ユーザ用ツール

サイト用ツール


サイドバー

このページの翻訳:



最近の更新



Tag Cloud

15_python:05_import_from_parent_dir

05 上の階層からimport

以下の構成でmain.pyからmod1.pyをimportしたい

# tree
.
├── conf
│   └── mod1.py
├── item
│   └── main.py

失敗パターン

main.py

from ..conf import mod1
if __name__ == '__main__':
    print(mod1.MOD)

エラー

# python3.6 item/main.py 
Traceback (most recent call last):
  File "item/main.py", line 1, in <module>
    from ..conf import mod1
ValueError: attempted relative import beyond top-level package

成功パターン

Pythonから一つ上の通常では階層はアクセスできないので
osでディレクトリを取得
sysでライブラリのインポートパスを追加する

main.py

currnet_dir = os.path.dirname( os.path.abspath(__file__) )
sys.path.append(currnet_dir + '/../')
from conf import mod1
if __name__ == '__main__':
    print(mod1.MOD)
15_python/05_import_from_parent_dir.txt · 最終更新: 2019/08/22 17:00 by matsui