読者です 読者をやめる 読者になる 読者になる

Python をインストールしたあとの設定

Python 3 系を選択した理由は、Python 3.3 から virtualenv が標準で入っているそうだし、もう 3 系でもいいよねというか、「パーフェクト Python」が 3 系を対象に書かれているから 3 系にするという感じ。
easy_install とか setuptools とかそのあたりがよくわからないので YAMAGUCHI さんのエントリを読む。

pyvenv を使えばいいのだよね。

$ python

とするとシステムに入っている Python (/usr/bin/python) が起動する。

$ python3.3

とすると MacPorts で入れた Python 3.3 (/opt/local/bin/python3.3) が起動する。
/opt/local/bin を見ると python3.3 の他にも Python 関連のコマンドが入っていてそのなかに pyvenv-3.3 というものもあった。

$ pyvenv-3.3 YOUR_ENV_NAME

とすると YOUR_ENV_NAME という名前の仮想環境が作成される。

$ mkdir ~/projects
$ cd ~/projects
$ pyvenv-3.3 py3

~/projects/ というディレクトリの中に py3 という仮想環境を用意した。

$ ls py3/bin
activate  pydoc     python    python3   python3.3

中に python, python3, python3.3 と 3 種類あったけれどどれも実行すると Python 3.3 だった。どういう違いがあるのかよくわからないけれど、まぁいいか。
methane さんのエントリを参考に PATH の設定をする

$ echo 'PATH=$HOME/projects/py3/bin:$PATH' >> ~/.bash_profile
$ source ~/.bash_profile
$ python -V
Python 3.3.2

あれ、これは venv を activate しなくてもよいということなのかな。

$ which easy_install
/usr/bin/easy_install

なんとなく調べてみたら easy_install はすでに入っていた。でもこれは Mac OS X 標準の Python のものだと思われるので触らないほうがよさそう。

MacPorts で調べてみたらそれらしきパッケージがあったので入れようとするもエラー。なんだろう。

$ sudo port install py33-distribute
Password:
--->  Fetching distfiles for py33-distribute
--->  Verifying checksums for py33-distribute
--->  Extracting py33-distribute
--->  Configuring py33-distribute
Error: py33-distribute is obsolete, please install py33-setuptools instead.
Error: org.macports.configure for port py33-distribute returned: obsolete port
Please see the log file for port py33-distribute for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_python_py-distribute/py33-distribute/main.log
To report a bug, follow the instructions in the guide:
    http://guide.macports.org/#project.tickets
Error: Processing of port py33-distribute failed

代わりに py33-setuptools を入れなさい、とのこと。
methane さんは ez_setup.py というものをダウンロードして実行しているようだ。いろいろあるみたいで少々混乱するぜ。
少し整理してみる。

ふむふむ。

ブコメで「pip入れろ」みたいな記事見かけますが、virtualenv入れたらpip入るので、使うならそこで使えばいいですよ。それにpipもsetuptoolsモジュール叩くためにdistributeを呼ぶんで、結局システムに入れるパッケージ管理ツールはeasy_installのみでいいんじゃないすかね。下手にpipだけ入れるとdistutilsとかsetuptoolsのsetuptoolsを呼ぶんでやめたほうがいいです。おわり。

http://ymotongpoo.hatenablog.com/entry/2012/10/18/144352
  • pip は Python でパッケージをインストールする仕組みで、その中身としては setuptools モジュールを実行している。
  • 一口に setuptools モジュールといっても以下の 3 種類があるらしい。
    • distutils パッケージの setuptools モジュール
    • setuptools パッケージの setuptools モジュール
    • distribute パッケージの setuptools モジュール
  • で、上で書かれているように後発の distribute を使うのがよい、デファクトらしい。
  • virtualenv を入れると pip は自動で入っているので activate したら pip し放題のはず。
  • しかし Python 3.3 から入っている pyvenv は pip を用意してくれないので自分でインストールする必要がある。

easy_install をインストールする方法は何通りかあるようだ。

bitbucket から ez_setup.py をダウンロードする(methane さん)
$ curl -JO https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
$ python ez_setup.py
python-distribute.org から distribute_setup.py をダウンロードする(パーフェクト Python
$ python -c "import urllib.request:urllib.request.urlretrieve('http://python-distribute.org/distribute_setup.py', 'distribute_setup.py')"
$ python distribute_setup.py

1 行目は Python ワンライナーでダウンロードしている。自分でやるときは普通に curl 使えばいいかな。
YAMAGUCHI さんのエントリでも distribute_setup.py を入れている。

$ curl -O http://python-distribute.org/distribute_setup.py

何となくだけど、distribute_setup.py にしよう。