8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ディレクトリパスを直接指定してimport

Posted at

既存プロジェクトでImportErrorでテストが通らなかったのでメモ

プロジェクト構成が以下のような場合
※submoduleは"git submodule"で追加したモジュール想定

root/
 ├ module/
 │ └ submodule/
 │  └ to_import_module
 └ tests/
  └ test1.py

test1.pyにてto_import_moduleをインポートしようとして

import module.submoule.to_import_module
としても
ImportError: No module named to_import_module
と突き返されてしまいます。かといってこのためにパス指定やら
プロジェクト設定やらを変更するのも億劫です。
なのでここはsysとosモジュールを使って

import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../module/submodule')
import to_import_module

と探査パス範囲を拡張してやることによりインポートが可能になります。
他環境でも動くように相対パス指定がいいですね。

ただこの方法だと"pep8 E402"に怒られますが、
テスト実行はコード規則より重い
ので勘弁してくださいオナシャス。
もちろん本命コードに用いるのはNG

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?