OS X Server で python

恥ずかしながら今まで知らなかったのでメモ。

Domains Determine the Placement of Files + α、ということで基本的に以下のよーなポリシーで OS X を使っています。

  1. /bin;/sbin;/usr/bin;/usr/sbin;/usr/lib;/usr/libexec;/System/Library には手を触れない
  2. 極力 OS 標準のソフトを使う
  3. 追加でなにか入れたいときは pkgsrc を使う(→ /usr/pkg)
  4. pkgsrc になかったら、極力自分で local/***  って pkg を作って入れる(→ /usr/pkg)
  5.  どうしようもないときだけ自分で頑張る( → /usr/local)

OS X Server の場合、 apache は 2 のルール、 python は 3 のルールに従って(Package を追加すると 1. のルールに抵触(?)しちゃうんだもの)便利に使っていました。まぁ、そんな厳密にやってたわけでもないんですが。

ところが、 apache と python を連動させようとすると、 OS 標準の apache はそりゃもちろん OS 標準の python と連動しようとするのだけど、普段俺が使ってる python は pkgsrc の python なので OS 標準の python には何も Package が入っておらず、やりたいことが何一つできない、という状況に陥ったのです。

しかし OS 標準の python に Package を追加して 1. のルールを守れないのは嫌なので、なんとか Package を /usr/local 以下に入れられないかなぁ、とか悩んでいたのですが。

よくわかんなかったので、動きを確認してみようと sudo しないで easy_install を動かしてみたんです!

goro@flora:~$ easy_install pip error: can't create or remove files in install directory
The following error occurred while trying to add or remove files in the
installation directory:
    [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/test-easy-install-73424.write-test'
The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:
    /Library/Python/2.7/site-packages/
以下略

あれ? Package は /Library/Python の下に入るの? だったら 1. のルールに違反することはない? というこでちゃんとインストールしてみました

goro@flora:~$ sudo easy_install pip
Searching for pip
Reading http://pypi.python.org/simple/pip/
Reading http://www.pip-installer.org
Reading http://pip.openplans.org
Best match: pip 1.2.1
Downloading http://pypi.python.org/packages/source/p/pip/pip-1.2.1.tar.gz#md5=db8a6d8a4564d3dc7f337ebed67b1a85
Processing pip-1.2.1.tar.gz
Running pip-1.2.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Pp47TA/pip-1.2.1/egg-dist-tmp-jQZun5
warning: no files found matching '*.html' under directory 'docs'
warning: no previously-included files matching '*.txt' found under directory 'docs/_build'
no previously-included directories found matching 'docs/_build/_sources'
Adding pip 1.2.1 to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip-2.7 script to /usr/local/bin

Installed /Library/Python/2.7/site-packages/pip-1.2.1-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip

…やったぁ!
ということで無駄に時間を使った気がしますが、 OS X 標準の python で easy_install を使っても、インストール先は /Library/Python/2.7/site-packages だったり /usr/local/bin だったりするので /System/Library は極力汚染されないようにできてるみたいです。
しかし、だったら python 関連は pkgsrc じゃなくって pip で管理したほうが便利なのかもだなぁ…

コメントを残す