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も通りました。