質問: pyenvで作成した仮想環境内のpythonのバージョンを3.7に切り替えたいですが、できません。ローカルでは同じようなやり方で切り替わります。現在、ローカルでは3.7.0が使われています。 なにか、確認すべき点ありましたらご教示いただけませんでしょうか? ``` 仮想環境 (myvenv)$ pyenv install 3.7.0 (myvenv)$ pyenv global 3.7.0 (myvenv)$ pyenv global 3.7.0 (myvenv)$ pyenv versions system 3.6.5 * 3.7.0 (set by /Users/xxx/xxxx/.python-version) (myvenv)$ python -V Python 3.6.5 ```
回答: `pyenv install 3.7.0`をしている時点で、プロンプトに`(myvenv)`とついているということは、その`(myvenv)`環境は3.7.0をインストールする**前に**作ったもののはずですから、3.7.0をインストールする**前の**環境を指していることにはなんの不思議もないです。 「ローカルでは同じようなやり方で切り替わります」の方が不思議です。 `deactivate`して`(myvenv)`の環境を抜ければよいだけでは。とひとまず回答しておきます。 > > ただ、ある特定のディレクトリ配下だと(myvenv)環境でなくてもpythonのバージョンが固定されてしまいます。なにかお気づきな点ありましたらご教示頂けると助かります。 > > > `pyenv local xxxx`してそのディレクトリに`.python-version`というファイルを作ってしまったのではないでしょうか? その場合(myvenv)環境で**ない時に限り**、そのバージョンのPythonが起動されるでしょう。 (`.pyenv/shims/python`はPythonのバイナリでなく、実際に実行するPythonバイナリを選択するだけのプログラムになってます。(myvenv)環境に入っているなら`python`コマンドは(myvenv)環境の下の`bin/python`を起動するようになるため、pyenvによるその仕組みが関係なくなります)