pythonを使い始めて半年ほど経過しました。それなりに慣れてきた!初めてで慣れない環境構築を一生懸命やってたのが懐かしいくらいです。
ここ最近自分の周囲でもpythonを使いたい!という人がいたので環境構築の方法を教えるために、再度環境構築について調べてみました!そしたら自分の使っている現在の環境があまりにも力技で辻褄を合わせていたで、思い切って環境再構築をやってみました!!

動作環境

  • macOS High Sierra 10.13.1

現在使っているパッケージ

  • pyenv 1.1.5
  • virtualenvwapper

今回はこの2つのパッケージをアンインストールし開発環境を一新します!

今回の目標

  • pyenv
  • pyenv-virtualenv

上記のパッケージをインストールしてより開発しやすい環境にする!
バージョン管理と仮想環境構築するためのそれぞれのパッケージの選び方は、こちらの記事が参考になりました。パッケージの組み合わせについても書かれているので、読んでみるといいかもしれないです!
- Pythonの仮想環境構築(2017年版) pyenvとpyenv-virtualenvとvirtualenvとvirtualenvwrapperとpyvenvとvenv

環境のアンインストール

まずは現在の状況確認を行い、よくわからずにインストールしていった様々なものを全てアンインストールしていきます!
開発環境を構築していた当初、様々なサイトを回ってよくわからないのに次々にパッケージのインストールをしたせいで、PATHの設定がややこしくなったり、正常に動作しなくなったりして最終的に力技で現在の開発環境を整えたので、とりあえず今回を機にキレイにします!

インストールしたパッケージの場所確認

私は現在pyenvpythonのバージョン管理を行い、virtualenvwapperで仮想環境の管理を行なっています。正直このパッケージの組み合わせはあまり良くないそうです...
なので思い切ってここら辺を一旦アンインストールしていきます!

まずは今使っているpythonpyenvvirtualenvwapper.shがどこにあるのか確認します。

$ which python
/usr/local/bin/.pyenv/shims/python
$ which pyenv
/usr/local/bin/pyenv
$ which virtualenvwrapper.sh
/usr/local/bin/virtualenvwrapper.sh

これでアンインストールしたいものがどこにあるのか確認できました。ここで注意事項ですが、ここに出てきたPATHにあるpythonが消してはいけない可能性があります。
pythonが本当に消しても大丈夫か不安な方は、こちらの記事が参考になったので先にこちらを読むことをお勧めします。
- Macに入れた各種Pythonを全部アンインストールしてAnacondaを入れなおす

パッケージのアンインストール

python.pyenvの下にあるので.pyenvごと削除します。
この.pyenvは隠しファイルなので、コマンドラインを使い慣れていない方はこちらの記事を参考にしてみてください!
- Mac で不可視ファイル(隠しファイル)を表示・削除する5つの方法
- find、grep、rmを組み合わせてファイルを削除する方法

次にpyenvvirtualenvwrapperに関係するパッケージをアンインストールしていきます。
まずこの2つのパッケージに関係しているファイルを探します。

$ ls -l /usr/local/bin/ | grep pyenv
lrwxr-xr-x  1 takahiro  admin     31 10 20 00:25 pyenv -> ../Cellar/pyenv/1.1.5/bin/pyenv
lrwxr-xr-x  1 takahiro  admin     51 10 20 00:25 pyenv-activate -> ../Cellar/pyenv-virtualenv/1.1.1/bin/pyenv-activate
lrwxr-xr-x  1 takahiro  admin     53 10 20 00:25 pyenv-deactivate -> ../Cellar/pyenv-virtualenv/1.1.1/bin/pyenv-deactivate
lrwxr-xr-x  1 takahiro  admin     39 10 20 00:25 pyenv-install -> ../Cellar/pyenv/1.1.5/bin/pyenv-install
lrwxr-xr-x  1 takahiro  admin     54 10 20 00:25 pyenv-sh-activate -> ../Cellar/pyenv-virtualenv/1.1.1/bin/pyenv-sh-activate
lrwxr-xr-x  1 takahiro  admin     56 10 20 00:25 pyenv-sh-deactivate -> ../Cellar/pyenv-virtualenv/1.1.1/bin/pyenv-sh-deactivate
lrwxr-xr-x  1 takahiro  admin     41 10 20 00:25 pyenv-uninstall -> ../Cellar/pyenv/1.1.5/bin/pyenv-uninstall
lrwxr-xr-x  1 takahiro  admin     53 10 20 00:25 pyenv-virtualenv -> ../Cellar/pyenv-virtualenv/1.1.1/bin/pyenv-virtualenv
lrwxr-xr-x  1 takahiro  admin     60 10 20 00:25 pyenv-virtualenv-delete -> ../Cellar/pyenv-virtualenv/1.1.1/bin/pyenv-virtualenv-delete
lrwxr-xr-x  1 takahiro  admin     58 10 20 00:25 pyenv-virtualenv-init -> ../Cellar/pyenv-virtualenv/1.1.1/bin/pyenv-virtualenv-init
lrwxr-xr-x  1 takahiro  admin     60 10 20 00:25 pyenv-virtualenv-prefix -> ../Cellar/pyenv-virtualenv/1.1.1/bin/pyenv-virtualenv-prefix
lrwxr-xr-x  1 takahiro  admin     54 10 20 00:25 pyenv-virtualenvs -> ../Cellar/pyenv-virtualenv/1.1.1/bin/pyenv-virtualenvs
lrwxr-xr-x  1 takahiro  admin     38 10 20 00:25 python-build -> ../Cellar/pyenv/1.1.5/bin/python-build
$ ls -l /usr/local/bin/ | grep virtualenvwrapper
-rwxr-xr-x  1 root      admin  41697  9 27 15:09 virtualenvwrapper.sh
-rwxr-xr-x  1 root      admin   2210  9 27 15:09 virtualenvwrapper_lazy.sh

これら全て削除していきます。

まずは.pyenvから消していきます。

rm -rf .pyenv/
rm: .pyenv//versions/2.7.14/lib/python2.7/site-packages/pbr-3.1.1.dist-info/RECORD: Permission denied
rm: .pyenv//versions/2.7.14/lib/python2.7/site-packages/pbr-3.1.1.dist-info/metadata.json: Permission denied
rm: .pyenv//versions/2.7.14/lib/python2.7/site-packages/pbr-3.1.1.dist-info/WHEEL: Permission denied

省略

rm: .pyenv//versions: Directory not empty
rm: .pyenv/: Directory not empty

あぁ...なんかたくさん出てきた..
とりあえず消えたか確認してみましょう。

$ ls -a
.                         ghead                     gstdbuf                   pg_recvlogical
..                        ghostid                   gstty                     pg_resetwal
.pyenv                    gid                       gsum                      pg_restore
apm                       ginstall                  gsync                     pg_rewind
atom                      git-flow                  gtac                      pg_standby

消えてないですね...
調べたところPermission deniedとでたらsudoを使って消したらいいそうです。
気を取り直して再チャレンジ!!
問題なく削除できていた方はこれは飛ばしても大丈夫だと思います。

$ sudo rm -rf .pyenv/

パスワードが要求されると思うので入力します。
またまた確認してみましょう!

$ ls -a
.                         ghostid                   gstty                     pg_resetwal
..                        gid                       gsum                      pg_restore
apm                       ginstall                  gsync                     pg_rewind
atom                      git-flow                  gtac                      pg_standby

これでOK!ちゃんと.pyenvを消すことができました。
次はpyenvvirtualenvwapperを消します。

$ find /usr/local/bin | grep pyenv | xargs rm
$ find /usr/local/bin | grep virtual | xargs rm

これでこの2つのパッケージが消えたはず!とりあえず確認してみましょう。

$ which pyenv
$ which virtualenvwapper

これでパッケージ自体は消すことができました!

PATH設定

パッケージの削除は一通り終えました!続いて設定していたPATHを削除します。私はbashを使っているので、その他のシェルを使っている人は各自で対応してください。

私はbash_profileに書き込んでいるのでここから消していきます。

  3 if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
  4       export WORKON_HOME=$HOME/.virtualenvs
  5       source /usr/local/bin/virtualenvwrapper.sh
  6 fi
 12 export PYENV_ROOT="/usr/local/bin/.pyenv"
 13 export PATH="$PYENV_ROOT/bin:$PATH"
 14 if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

この二つですね。これを消すのですが、またすぐにpythonの環境構築を行う場合、後で必要になるかもしれないのでこれに関してはコメントアウトして残しておきます。

  3 #if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
  4 #      export WORKON_HOME=$HOME/.virtualenvs
  5 #      source /usr/local/bin/virtualenvwrapper.sh
  6 #fi
 12 #export PYENV_ROOT="/usr/local/bin/.pyenv"
 13 #export PATH="$PYENV_ROOT/bin:$PATH"
 14 #if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

これで一通りのアンインストールは完了しました!お疲れ様でした!

Homebrewを使っていた場合

Homebrewを使ってインストールしたものがあるか確認します。

$ brew list
autoconf        heroku-node     postgresql      sqlite
coreutils       libpng          pyenv           tree
freetype        openssl         pyenv-virtualenv    xz
gdbm            pcre            python3         zsh
heroku          pkg-config      readline

今回はpython関係を消したいのでpython3pyenvpyenv-virtualenvを消します!

$ brew uninstall python3
Uninstalling /usr/local/Cellar/python3/3.6.2... (3,660 files, 56.6MB)
$ brew list
autoconf        heroku-node     postgresql      tree
coreutils       libpng          pyenv           xz
freetype        openssl         pyenv-virtualenv    zsh
gdbm            pcre            readline
heroku          pkg-config      sqlite
$ brew list python3
Error: No such keg: /usr/local/Cellar/python3

これでpython3は消すことができました!同様にpyenvpyenv-virtualenvも消します!

$ brew uninstall pyenv
Uninstalling /usr/local/Cellar/pyenv/1.1.5... (590 files, 2.3MB)
$ brew uninstall pyenv-virtualenv
Uninstalling /usr/local/Cellar/pyenv-virtualenv/1.1.1... (11 files, 24.7KB)
$ brew list
autoconf    gdbm        libpng      pkg-config  sqlite      zsh
coreutils   heroku      openssl     postgresql  tree
freetype    heroku-node pcre        readline    xz

これでOKです!本当は環境構築まで書きたかったですが、力尽きそうなので環境構築はまた次回書きます。
お疲れ様でした\\\٩( 'ω' )و ////

ちょっとした雑談

今回はpythonの環境構築について書きましたが、改めて思わされたのが「ちゃんと調べて理解した上で環境構築をやりましょう」ということですね...
pythonに関しては環境構築に関する記事はたくさんあるので、一度全てを読んでから実行することをお勧めします。私のように複数の記事を読んで理解してない状態で異なるやり方を実行すると、おかしなことになる可能性があります。一途に進めていきましょう!


参考にした記事

Pythonの仮想環境構築(2017年版) pyenvとpyenv-virtualenvとvirtualenvとvirtualenvwrapperとpyvenvとvenv
Macに入れた各種Pythonを全部アンインストールしてAnacondaを入れなおす
Mac で不可視ファイル(隠しファイル)を表示・削除する5つの方法
find、grep、rmを組み合わせてファイルを削除する方法
【Mac】【Homebrew】Python 3 をアンインストールする手順