カレントディレクトリ以外のcsvファイルを読み込もうとしたらnumpyがimportされない
csvからデータを読み込んでnumpyの行列に入れるという操作をしていました。
pythonファイルとcsvファイルは以下の通りです。
hoge.py
import numpy as np import sys data = np.loadtxt(sys.argv[1], delimiter=',') print(data)
data.csv
1, 2, 3 4, 5, 6
まあ、チュートリアルレベルの単純な処理なのですが以下のように動作します。
$ pyenv local anaconda3-4.1.1 $ python hoge.py ./data.csv [[ 1. 2. 3.] [ 4. 5. 6.]]
なんの問題もなく読み込んだ行列が表示されていますね。
次に、他のディレクトリからcsvを読み込んでみます。
$ cp ./data.csv ~/Desktop/ $ python hoge.py ~/Desktop/data.csv Traceback (most recent call last): File "hoge.py", line 1, in <module> import numpy as np ImportError: No module named 'numpy'
「numpyなんていうモジュール無いよ」とエラーを吐いてしまいます。~/Desktop/の中でlocalのpyenvが設定されていて、そのpython環境にはnumpyが入っていませんでした。取り敢えずこの環境を解除してみますと、
$ cd ~/Desktop $ pyenv local --unset $ cd ~/work/python/hoge $ python hoge.py ~/Desktop/data.csv [[ 1. 2. 3.] [ 4. 5. 6.]]
ちゃんと動くようになりました。コマンドライン引数でディレクトリを指定した時はそのディレクトリの環境が読み込まれるのでしょうか?