41180


現在`pyenv versions`で

[code]

      system
    * anaconda3-5.0.1 (set by /home/username/.python-version)
      anaconda3-5.0.1/envs/py36
    
[/code]

と表示されています．

この状態で`pyenv global system`と打っても

[code]

      system
    * anaconda3-5.0.1 (set by /home/username/.python-version)
      anaconda3-5.0.1/envs/py36
    
[/code]

となって変更が反映されません．  
最初は正常にsystemに変更されていたのですが，何回か繰り返しているにこのような現象に出会いました．  
どういう原因が考えられるでしょうか？

環境はlinuxです．ちなみに標準システムのpythonはpython2.6です

### 追記

  * `echo ${PYENV_VERSION}` を実行しても何も表示されません。
  * `.python-version` という名前のファイルがホームディレクトリにあります。


CC BY-SA 3.0
2018-01-24T09:49:44.137
41179
2018-01-24T10:43:07.547
2018-01-24T10:17:45.583
19110
26604
question
python anaconda pyenv
pyenv global systemがうまくいかない


## 解決法

ホームディレクトリで `pyenv local` したい理由が無ければ、`~/.python-version` を削除してください。

## 詳細

pyenv の [README.md](https://github.com/pyenv/pyenv#choosing-the-python-
version) によると、pyenv は以下の優先順序で探索することで仮想環境を選んでいます。

  1. (もし設定されていれば) 環境変数 `PYENV_VERSION`。この設定は、`pyenv shell` コマンドによって一時的に変更できます。
  2. (もしあれば) カレントディレクトリにある `.python-version` ファイル。これは `pyenv local` コマンドで変更できます。
  3. (もしあれば) 親ディレクトリを順番に見ていき、最初に見つかった `.python-version` ファイル。この探索は、ファイルシステムのルートに到達するまで行われます。
  4. グローバルな `$(pyenv root)/version` ファイル。これは `pyenv global` コマンドで変更できます。このグローバルなバージョンファイルが無い場合、pyenv は標準システムの Python を利用したいのだと解釈します。(なお、`pyenv root` は標準設定だと `~/.pyenv` です。)

今回の問題には 手順 3 が関係しています。ホームディレクトリに `.python-version`
が存在するため、ホームディレクトリの下で作業するときこれが選ばれてしまっているのでしょう。

作業途中からこうなってしまったとのことですが、たとえばホームディレクトリで `pyenv local` を実行してしまったときこうなります。

この動作を意図してなかったのであれば、`rm ~/.python-version` で問題が解決するはずです。


CC BY-SA 3.0
2018-01-24T10:14:05.637
41180
2018-01-24T10:43:07.547
2018-01-24T10:43:07.547
19110
19110
41179
answer