Python環境の再構築@macbook pro <1>

先日のブログ(5月3日)に、

macOS(conda環境)でturtleを使おうとしてもうまくいかない。

具体的には以下のことを行うとすべてmacOSが再起動されてしまうというかなり深刻な状態。

  • Tkinterのバージョンを調べる

  • turtleモジュールをインポートさせるpythonスクリプトを実行する

  • Jupiter notebook環境で上記を実行しても同じ

と書いたが、そもそもturtleの問題ではなく、どうもtkinterに関連する現象であることはほぼ確実みたい。 たまたま自分のノート(mcbook pro)が悪いのかと思って、もう一台別のマシンで確認してみたが、ほぼ同じ現象が再現された。

一方で、昔のiMacを再起動して、OSクリーンインストール=>Anacondaのインストールで試したところ、

  • こちらもidleではpython2が起動するものの、idle3と入力するとpython3のidleが起動される
  • tinterをつかったスクリプトも問題なく動作する

ということがわかり、かならずしもすべてのmacの環境で同じことが起こるわけでもないようだ。

せっかく PythonGUIプログラミングの勉強をはじめよう、とおもったところにこの状態。 連休中だし、自粛中だし、まあこの際すっかりPythonの環境をクリーンに再構築しよう、ということで再構築作業をはじめたのでメモしておく。

この手の情報はWEBにたくさん出ているので、まずはどこを参考にするかチェックする。 いくつか役に立ちそうな記事を発見したので、それらを参考に作業を進めていく。

Pythonの環境をクリーンに再構築する」が目的なので、以下の順で作業を進めていくことにする。

  1. まずは自分のmacPython環境をデフォルトに戻す。

  2. そこにPython3をインストールしなおし、仮想環境を構築する 環境にはvenv(Python3.6以上で推奨されているらしい)を使う

かなり長くなるので、今日のところは1.までを詳細にメモとして残しておく。

Python環境をデフォルトに戻す

具体的には、anacondaを完全にアンインストールして、デフォルト(Python2.7のみインストールされている状態)にする。 参考になったのは以下のページ。

weblabo.oscasierra.net

もともと、anaconda3をインストールしたあとに、condaで環境構築していたので、 まずは仮想環境の削除から。Python3.8.2をインストールした仮想環境「py386」をつくっていたので、 まずはそれを削除。

(base) mbp13:~ solvalou$ conda remove -n py382 --all


Remove all packages in environment /Users/solvalou/anaconda3/envs/py382:


## Package Plan ##

  environment location: /Users/solvalou/anaconda3/envs/py382


The following packages will be REMOVED:

  ca-certificates-2020.1.1-0
  certifi-2020.4.5.1-py38_0
  libcxx-4.0.1-hcfea43d_1
  libcxxabi-4.0.1-hcfea43d_1
  libedit-3.1.20181209-hb402a30_0
  libffi-3.2.1-h0a44026_6
  ncurses-6.2-h0a44026_0
  openssl-1.1.1g-h1de35cc_0
  pip-20.0.2-py38_1
  python-3.8.2-hc70fcce_0
  readline-8.0-h1de35cc_0
  setuptools-46.1.3-py38_0
  sqlite-3.31.1-h5c1f38d_1
  tk-8.6.8-ha441bb4_0
  wheel-0.34.2-py38_0
  xz-5.2.5-h1de35cc_0
  zlib-1.2.11-h1de35cc_3


Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

一応確認すると、(base)のみ残っているので無事削除できている。

(base) mbp13:~ solvalou$ conda info -e
# conda environments:
#
base                  *  /Users/solvalou/anaconda3

(base) mbp13:~ solvalou$
(base) mbp13:~ solvalou$ env | grep CONDA
CONDA_SHLVL=1
CONDA_PROMPT_MODIFIER=(base)
CONDA_EXE=/Users/solvalou/anaconda3/bin/conda
_CE_CONDA=
CONDA_PREFIX=/Users/solvalou/anaconda3
CONDA_PYTHON_EXE=/Users/solvalou/anaconda3/bin/python
CONDA_DEFAULT_ENV=base

ここから、上記WEBサイトの通りに作業を進める。

  • anaconda-cleanを実行する (厳密には、anaconda-cleanをインストールしてから、実行)

anaconda-cleanのインストール&実行の画面は以下の通り。 まずはインストール:

(base) mbp13:~ solvalou$ conda install anaconda-clean
Collecting package metadata (current_repodata.json): done
Solving environment: /
The environment is inconsistent, please check the package plan carefully
The following packages are causing the inconsistency:

  - defaults/osx-64::anaconda==2019.07=py37_0
  - defaults/osx-64::numba==0.44.1=py37h6440ff4_0
done

## Package Plan ##

  environment location: /Users/solvalou/anaconda3

  added / updated specs:
    - anaconda-clean


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    anaconda-clean-1.1.0       |           py37_1           7 KB
    tbb-2020.0                 |       h04f5b5a_0         150 KB
    ------------------------------------------------------------
                                           Total:         157 KB

The following NEW packages will be INSTALLED:

  anaconda-clean     pkgs/main/osx-64::anaconda-clean-1.1.0-py37_1
  tbb                pkgs/main/osx-64::tbb-2020.0-h04f5b5a_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
tbb-2020.0           | 150 KB    | ######################################################### | 100%
anaconda-clean-1.1.0 | 7 KB      | ######################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

つづけてanaconda-cleanを実行:

(base) mbp13:~ solvalou$ anaconda-clean
Delete .anaconda? (y/n): y
Backup directory: /Users/solvalou/.anaconda_backup/2020-05-05T110440
Delete .conda? (y/n): y
Delete .condarc? (y/n): y
Delete .idlerc? (y/n): y
Delete .ipynb_checkpoints? (y/n): y
Delete .ipython? (y/n): y
Delete .jupyter? (y/n): y
Delete .matplotlib? (y/n): y

一応ここまで問題なく実行できたが、バックアップは一応とっておくことにする。 (削除するときには以下のコマンドで削除)

$ rm -fr ~/.anaconda_backup
  • Anaconda3ディレクトリを削除する Anaconda3のディレクトリの場所を確認して削除。これはすぐにできる。 *普通は /Users/solvalou/anaconda3 にあると思う。

  • .bash_profileの中のPathを追加する記述を削除する 適当なeditorで.bash_profileを編集。 前回Anacondaをインストールするときに追加された以下の部分をまるっと削除する。

# added by Anaconda3 2019.07 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/Users/solvalou/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/Users/solvalou/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/Users/solvalou/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base
    else
        \export PATH="/Users/solvalou/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda init <<<

vimでファイルを開いて中身を削除。 ちゃんと消えたか一応確認しておく。

(base) mbp13:~ solvalou$ vim .bash_profile
(base) mbp13:~ solvalou$ cat .bash_profile
(base) mbp13:~ solvalou$

これで問題なく削除できていることが確認できた。

  • ショートカットを削除する これは、単にFinderからアプリケーションフォルダにあるAnacondaのエイリアスアイコンをゴミ箱にいれて終了。

一応macを再起動して、Pythonがデフォルトの状態にもどったか確認すると、

mbp13:~ solvalou$ which python
/usr/bin/python
mbp13:~ solvalou$ python --version
Python 2.7.10

mbp13:~ solvalou$ python
Python 2.7.10 (default, Feb 22 2019, 21:55:15)
[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

mbp13:~ solvalou$ ls -l /System/Library/Frameworks/Python.framework/Versions/2.7/lib/
total 0
lrwxr-xr-x    1 root  wheel      9  7 29  2019 libpython2.7.dylib -> ../Python
drwxr-xr-x    5 root  wheel    160  7 29  2019 pkgconfig
drwxr-xr-x  649 root  wheel  20768  2 23  2019 python2.7

デフォルトではPython2.7.10がインストールされている。

以上のとおり、ほぼ参考にしたページ記載の通りに作業をすすめて、無事にアンインストールできた模様。 続きはまた明日以降に。