LoginSignup
0
0

More than 5 years have passed since last update.

Macportsのeasy_installでバージョンを自動解決して実行する

Posted at

Macportsでバージョンの異なる複数のPythonをインストールしてしまい色々とやらかしている環境で、うっかりeasy_installを叩いた時にport selectで選択しているPythonのバージョンに対応したeasy_installを自動的に選択して実行して欲しかったので、ラッパースクリプトを書いてみました。(日本語が長すぎ)

バージョン切り替えの手法が色々あるのがPython入門者にとってはカオスです...

#!/bin/bash
###
### Macports easy_install wrapper
###   Created by H.Ishiura 2016-12-17
###

SELECT=`port select --show python`
if [[ "$SELECT" =~ ^The\ currently\ selected\ version\ for\ \'python\'\ is\ \'python(.)(.)\'\.$ ]]; then
    MAJOR_VERSION=${BASH_REMATCH[1]}
    MINOR_VERSION=${BASH_REMATCH[2]}
    COMMAND="easy_install-${MAJOR_VERSION}.${MINOR_VERSION}"
else
    COMMAND="/usr/bin/easy_install"
fi
${COMMAND} $@

このスクリプトを実行権をつけて/usr/binや/opt/local/binよりも優先的に検索されるディレクトリに配置します。
以下は導入の例です(動作は確認していません)

$ sudo port install python27
$ sudo port install py27-readline
$ sudo port install py27-setuptools
$ sudo port install py27-pip
$ sudo port install python35
$ sudo port install py35-readline
$ sudo port install py35-setuptools
$ sudo port install py35-pip
$ sudo port select --set python python35
$ sudo port select --set pip pip35
$ curl https://gist.githubusercontent.com/ura14h/6742ae07036dcf74b30de5d2ff8931a9/raw/f30e3887421e93a26df5553eb5c425cb7d7407e2/easy_install -o easy_install_wrapper
$ mkdir ~/bin/
$ mv easy_install_wrapper ~/bin/easy_install
$ chmod 755 ~/bin/easy_install
$ export PATH="${HOME}/bin:${PATH}"

あとは普通にコマンドを叩きます。

$ easy_install --version
setuptools 30.3.0 from /opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages (Python 3.5)

ちなみに、バージョンを特定して実行する場合はこんな感じです。

$ /usr/bin/easy_install --version
setuptools 18.5 from /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (Python 2.7)
$ 
$ easy_install-2.7 --version
setuptools 30.3.0 from /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (Python 2.7)
$ 
$ easy_install-3.5 --version
setuptools 30.3.0 from /opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages (Python 3.5)

本当は、port select --set easy_install easy_install-3.5っぽいことができればいいんですけどね...。いや、そもそもMacportsをやめればいいのか...。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0