nykergoto’s blog

機械学習とpythonをメインに

pythonの自作モジュールimportで困ったこと

自作モジュールをimportしたい時

同じ階層にある時はsample.pyであれば

import sample

でやればOKです.

でもあまりファイル数が多くなってくると,一定のまとまりでフォルダに入れて管理したくなります.そういう時は適当なフォルダにスクリプトを入れて,そのフォルダ内に__init__.pyを入れておけば,python再帰的にフォルダ内部の.pyファイルを読み込んでくれるので,importができるようになります.

今回詰まったこと

フォルダ構造は以下のような感じ
f:id:dette:20161010090105p:plain

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 --とかのやつ)
理由はわかりません.謎です.