てっくらのーと
てっくらのーとは、触れた技術のメモと日常の記録が少し合わさった個人のサイトです。
てっくらのーとは、触れた技術のメモと日常の記録が少し合わさった個人のサイトです。
上位ディレクトリにあるモジュールの import
モジュールが import 出来なかったので。
上位ディレクトリのモジュールを import しようとすると
以下構成における test/test_module.py
で lib/module.py
を import しようとしたら出来なかった。
$ tree
.
├── Pipfile
├── Pipfile.lock
├── lib
│ ├── __init__.py
│ └── module.py
├── main.py
└── test
└── test_module.py
- test/test_module.py
from ../lib import module
import unittest
(略)
$ python3 test/test_module.py
File "test_module.py", line 1
from ../lib import module
^
SyntaxError: invalid syntax
これは書き方がダメっぽい。
- test/test_module.py
from ..lib import module
import unittest
(略)
/
を省略してみた。
$ python3 test/test_module.py
Traceback (most recent call last):
File "test_module.py", line 1, in <module>
from ..lib import module
ValueError: attempted relative import beyond top-level package
やはりダメでした。
確認してみると
確認してみるとやはり出来ないようで、import
を定義しモジュールを探すディレクトリは自身のディレクトリを root として上位ディレクトリは探しに行かないようです。
sys.path
に上位のディレクトリパスを加える
というわけで sys.path
に上位のディレクトリパスを加えるようにしたら import 出来るようになった。
import sys
import pathlib
currentdir = pathlib.Path(__file__).resolve().parent
sys.path.append(str(currentdir)+"/../lib/")
参考にある通りの記載で上手く行ってよかったよかったなのだけど、絶対忘れるので備忘録的にメモ。この方法がベストなのかなあ、と少しもやもや。
参考
お世話になりました。
© てっくらのーと/mkr-note 2024