LoginSignup
36
31

More than 5 years have passed since last update.

MacでPython環境を作る時に気をつける事

Posted at

マシンを交換したので久しぶりにPython環境を構築してたら色々つまずいたのでメモ。

参考ページ

http://d.hatena.ne.jp/nakamura001/20111129/1322579170
http://www.sicafe.net/macPackageManageTips/html/homebrewPythonInstall.html
http://yono.hatenablog.jp/entry/20100923/1285235346
http://mzmttks.blogspot.jp/2011/12/python-site-packagesdist-packages.html
http://hello-hello-world.blogspot.jp/2011/09/pythonsite-packages.html

Macには標準でPythonがインストールされています。

しかし、開発環境を構築する時には標準の環境を汚したくなかったり、別のバージョンのPythonが必要だったりするので別にインストールする事も多いのです。

しかし、中途半端なセットアップを行うとライブラリのインストールで意図しないうちにライブラリのインストール先が混じってしまい、インストールしたはずのパッケージが行方不明なんて事になったりします。

easy_install は元から入っている

/usr/bin/easy_install

にあるけど pip は公式インストーラーから入れたので

/usr/local/bin/pip

だったりするわけです。さらにPythonが /opt 以下だったりするとさらにカオス。

例えば標準の python の site_packages は以下になりますが

/Library/Python/2.7/site-packages

MacPortsでインストールした python だと以下になります。

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

まぁ基本的に virtualenv 内のみで使ってれば問題は出ないんですが。

MacPortsでインストールしたPythonを標準にする

ここらへんはpython特有の歴史的な問題も絡むので細かい話は置いておいて、MacPortsを使ってPython用の環境を作る場合です。

  1. まずはpython本体

    $ sudo port install python27
    
  2. 次にeasy_install。なぜかsetuptoolsの方はselectに対応してないので easy_install はインストール先のpythonに合わせて easy_install-2.7 みたいなコマンドを使います。

    $ sudo port install py27-setuptools
    

    ここでエラーになる場合エラーログにも出てきますが以下のコマンドで直ります。ちなみに私の場合は公式のget_pip.pyをportでいれたpythonで実行後の環境だと発生しました。

    sudo port -f activate py27-distribute
    
  3. 次に pip もportで入れます。select で標準の pip を切り替え。

    $ sudo port install py27-pip
    $ sudo port select --set pip pip27
    
  4. virtualenv関係。

    $ sudo port install py27-virtualenv py27-virtualenvwrapper
    $ sudo port select --set virtualenv virtualenv27
    $ echo -e "\n# virtualenv\nexport WORKON_HOME=\$HOME/.virtualenvs\nsource `which virtualenvwrapper.sh-2.7`\n" >> ~/.bashrc
    

    virtualenvはselectで切り替えを。virtualenvwrapperはselect無いので注意。

パスの調べ方

python の参照しているパスを調べる方法

python -c "import site; print(site.getsitepackages())"

distributeの参照先

python -c "import distutils.sysconfig as s; print(s.get_python_lib())"
36
31
2

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
36
31