ユーザ用ツール

サイト用ツール


サイドバー



最近の更新



Tag Cloud

タグ数量
9
10
1
3
1
2
17
7
1
1
4
13
4
1
2
314
1
9
2
7
21
5
1
31
3
3
1
6
1
1
46
1
3
3
1
1
1
1
1
1
33
46
7
9
10
8
10
3
21
2
9
2
2
6
9
1
1
6
12
4
3
3
2
1
8
2
4
1
6
30
2
12
5
3
1
1
2
3
2
1
3
4
3
3
4
2
2
1
1
2
1
2
1
2
1
27
2
1
3
2
2
1
1
2
3
17
5
9
1
1
2
17
2
6
1
2
12
1
3
1
1
4
11
1
6
4
2
7
1
3
3
13
1
4
1
1
10
3
1
17
3
1
5
1
2
1
1
2
9
2
2
3
2
1
3
1
3
1
2
2
2
1
2
6
1
4
3
5
1
3
1
3
3
2
1
1
30
1
3
3
1
1
1
5
5
1
36
2
4
2
1
2
2
3
1
1
1
4
1
2
1
3
1
1
1
2
5
2
5
2
1
1
1
5
3
2
4
6
1
2
2
27
1
1
3
4
1
1
2
1
1
2
1
1
1
1
2
1
1
1
1
1
20
7
1
6
1
1
3
1
2
2
1
2
1
1
1
1
1
1
2
1
1
2
1
1
1
1
1
1
1
5
2
1
1
2
2
2
1
1
2
1
1
12
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
1
1
1
2
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

Yesterday:1564 Today:080 Total:28803