Skip to content

macOS MojaveへのPyenvのインストール

Skype APIを使ったプログラム書きたくてPythonからしかまともに叩ける環境が用意されてないみたいなのでPythonのパッケージマネージャーであるpipから

$pip install Skype4Py

とやった所ハマりました。
かなーーーりハマりまくったので備忘録兼ねて記事に。


-bash: pip: command not found
そんなコマンドねぇぞとお怒りです。

$brew install pip

と叩いてみると

Error: No available formula with the name “pip” 
pip is part of the python formula:
brew install python

brewでPythonを入れろと仰る。
やってみた。
でも、Pythonはデフォルト環境でもmacOSには入っています。

案の定
Error: python 3.7.4 is already installed

でも、その後が混乱。
To upgrade to 3.7.4_1, run `brew upgrade python`.
手動インストールした事にしろということかな?
とりあえずやってみた。

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
  /usr/local/opt/python/libexec/bin

If you need Homebrew’s Python 2.7 run
  brew install python@2

以下、略

Python 3ではpip3というパッケージマネージャーにとって代わられたらしい。
で、Pythonど素人の私はここでミスを犯す。

$pip3 install Skype4Py

と。Skype4PyはPython2用に書かれたパッケージなのでエラーのオンパレード。

そして、Python2.7を使いたければbrew install python@2を叩いてね。
と言われてるので叩いてみた。

確かに、pip install Skype4Pyは通ったのだが・・

$python
>>> import Skype4Py

とやると、
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “/usr/local/lib/python2.7/site-packages/Skype4Py/__init__.py”, line 7, in <module>
from skype import Skype
File “/usr/local/lib/python2.7/site-packages/Skype4Py/skype.py”, line 7, in <module>
import weakref
File “/usr/local/Cellar/python@2/2.7.16_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/weakref.py”, line 14, in <module>
from _weakref import (ImportError: cannot import name _remove_dead_weakref

とここでまたつまづきました。

$brew uninstall --ignore-dependencies python@2

とやるといいよというネットの情報を頼りに疑い半分で叩いた。
するとpipコマンドが
-bash: /usr/local/bin/pip: No such file or directory
消えてるし・・orz

$python

結果、
[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin
>>>
と来たので、import Skype4Pyをすかさず打ち込むと
ImportError: No module named Skype4Py

そんなモジュールありませんよとのこと。
気を取直して、そもそもPython2系とPython3系って共存できるのかな?という疑問もあり調べていくと、pyenvなるものがある事を見つけました。

$brew install pyenv

同じ事考える人はいるみたいでpyenvというプログラムが用意されているようです。
これを使うと現在使用中のpythonのバージョンを共存させつつ任意に切り替えて使えるようです。
すかさず、インストールを行ってみます。

そして、インストールが終わったら。
Pythonをバージョンごとにそれぞれインストールしてあげる必要があります。

$pyenv install --list  | egrep '^[ ]+[23]\.[0-9\.]+$'

このコマンドでPython2系と3系両方のオフィシャルなバージョン番号が一覧で表示されます。
2.7.16と3.7.4がそれぞれ最新とのことだったので次のコマンドでインストールします。

$pyenv install 2.7.16 & pyenv install 3.7.4

自動コンパイルですがソースコードからコンパイルしてのインストールなので気長に待ちましょう。
Installed Python-2.7.16 to /usr/local/var/pyenv/versions/2.7.16
Installed Python-3.7.4 to /usr/local/var/pyenv/versions/3.7.4
入りましたね(^^)

使うPythonのバージョン切り替えは

$pyenv global バージョン番号

で行います。開いているシェル内だけで一時的に切り替えたい場合はglobalをshellにしてください。
これでやりたかったimport Skype4Pyも通りました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)