pyenvのバグ??

pyenvのバグ??

バグかどうかわからんけど、思った通りの動作をしなかったので、メモ。

現象

pyenv を使う環境で、

    python script.py --option /path/to/file

と実行した場合、カレントディレクトリと/path/to/fileの存在するディレクトリで使用するpythonのバージョンが異なる場合、
(どちらか片方 or 両方で pyenv localが指定されている)
カレントディレクトリではなく、/path/to/fileの存在するディレクトリで使用するpythonのバージョンが指定されてしまうらしい。

問題が発生するシチュエーションは そんなに多くないと思うけど、 双方のバージョンでインストールしてるモジュールが違ったりすると困ったことになる。

原因

色々試行錯誤してみてわかったことを結論だけ。

~~~/.pyenv/shims/python を見ると、
コマンドラインをサーチして最初に見つかったファイルの属する.python-versionを読むらしい。
(以下の部分)

    ・・・
    case "$arg" in
        -c* | -- ) break ;;
        */* )
            if [ -f "$arg" ]; then
                export PYENV_FILE_ARG="$arg"
                break
            fi
            ;;
    esac
    ・・・

本来ならスクリプトファイルのあるディレクトリの.python-versionを読んでほしいはずなのに…
*/* ) でなく、*) じゃないのかな? なんか深い訳があるのかもしれんけど…

対処方法

で、以下のいずれかの方法で対処できる。

免責(のツモリ)

あくまで自分のメモなんで、、、 ゴニョゴニョ…