起こったこと
ラズパイでpythonファイルを自動起動するにはsudoで実行する必要がある。
しかし、普通にpython3 .py
で実行できたファイルがsudoをつけたとたんにImportError: No module named などとエラーを吐いた。
解消に3時間くらいかかったので備忘録。
対処法
- ターミナルで
python3
を実行 - numpyをインポートして
numpy.__path__
でどこを参照しているのか確かめる - 1にsudoをつけて2まで同様に行う。すると先程とは違う参照場所が返ってくるはず
- そのままsysをインポートして
print(sys.path)
を実行。/dist-packagesと書いてあるものがあることを確認する。ここでは/usr/lib/python3/dist-packagesがあったとする -
cd /usr/lib/python3/dist-package
を実行 -
sudo nano module.pth
で.pthファイルを作る。名前は何でもいい。 - 2ででてきたpathを''とか""無しに書き込んで保存
以上でImportErrorを起こさずに実行できた。