pythonの自作モジュールimportで困ったこと
自作モジュールをimportしたい時
同じ階層にある時はsample.pyであれば
import sample
でやればOKです.
でもあまりファイル数が多くなってくると,一定のまとまりでフォルダに入れて管理したくなります.そういう時は適当なフォルダにスクリプトを入れて,そのフォルダ内に__init__.py
を入れておけば,pythonは再帰的にフォルダ内部の.py
ファイルを読み込んでくれるので,importができるようになります.
今回詰まったこと
フォルダ構造は以下のような感じ
sample.py
import numpy as np def sample(x): x = np.random.normal(size=100) print(x.mean())
begin.py
from sample import sample sample()
これをtest_module
の親ディレクトリにある以下のファイルからimportしようとするとエラーが起こりました.
from test_module import begin begin.sample()
File "/Users/NYer510/python-tutorial/test_module/begin.py", line 2, in <module> from sample import sample ImportError: No module named 'sample'
解決法
結論から言うと,encodingを指定すると直りました.(# -- coding: utf-8 --とかのやつ)
理由はわかりません.謎です.