コンピュータを研究に使うための私的メモ。Python、Fortran、Ubuntu、etc...


Python本体

Ubuntu

Ubuntu11.10 12.04で確認。Python2.xは標準で入っています。3.x系列が欲しい場合はaptから入れる。標準の操作はできるがNumPy等のライブラリがこのままでは動かないのでPythonのライブラリを入れておく。
$ sudo apt-get install python-dev

Windows

Windows7 Pro 64bitで確認。
Python標準リリースからWindows64bit用のインストーラを使用。インストールしたらコマンドプロンプトからも使えるようにユーザー環境変数「PATH」にC:\Python27を通しておく。

pythonbrew

virtualenvを使いやすくした感じのもの。複数のバージョンのPythonやライブラリを使い分けたいときルート権限がなくて元環境を汚したくない時に便利

インストール

PyPiにあるのでpipで入る。

プロジェクト

プロジェクトをいくつか作ってそれぞれのプロジェクトことにライブラリを管理できる。
#作成
$ pythonbrew venv create hoge
#切り替え
$ pythonbrew venv use hoge
#終了
$ deactivate

ipythonの設定

ipythonはvirtualenvの環境が働かずOSの環境を読み込んでしまうので別途設定が必要。こちらの方法2を採用してみた。
まず設定ファイルを作る。
$ ipython profile create
これで~/.ipython/profile_defaultに設定ファイルが作られる。ここに適当な名前(pythonbrew.py)で以下のファイルをつくる。
import site
from os import environ
from os.path import join
from sys import version_info

if 'VIRTUAL_ENV' in environ:
    virtual_env = join(environ.get('VIRTUAL_ENV'),
                       'lib',
                       'python%d.%d' % version_info[:2],
                       'site-packages')
    site.addsitedir(virtual_env)
    print 'VIRTUAL_ENV ->', virtual_env
    del virtual_env
del site, environ, join, version_info
ipython起動時にこのスクリプトを読み込んでくれるようにipython_config.pyに以下をかく。
load_subconfig('pythonbrew.py')
これでOK。

setuptools/pip

パッケージを簡単にインストールできるツール。pipのほうが便利なのでeasy_installよりpipを使うことにする。

Ubuntu

$ sudo apt-get install python-setuptools
pipを入れる。

Windows

こちらから。環境変数PATHにC:\Python27\Scriptsにパスを通してコマンドプロンプトから使えるようにする。

ライブラリ類

Ubuntu

aptからpython-パッケージ名を探せば多くはインストール可能。pipを使うほうが最新版が入るのでpipを使う。プロキシ環境ではプロキシオプションをつけるか、
sudo -E pip install パッケージ名
でユーザーの環境変数を引き継ぐといい。ライブラリ不足等依存関係が面倒な人はaptでpthon-ライブラリ名みたいなのを探して入れると楽。ただし最新版とは限らない(たいてい一つ前)

Windows

インストールは主にpipで。ただし公式版には64bit版がないものもあるのでこちらから非公式版のパッケージを探してみる。

環境変数

インストール先を指定した場合は環境変数PYTHONPATHにパスを通しておく。

pip

setup.pyがなくてconfigure.pyだったりするライブラリもあるので失敗するときは、ソースからインストールするのがよい。

インストール

#ライブラリのインストール(最新版が入ります)
$ pip install パッケージ名
#ライブラリのアップデート
$ pip install パッケージ名 -U
#ライブラリの再インストール
$ pip install パッケージ名 -I
特定のバージョンをインストールするには、
$ pip install 'python-dateutil==2.0'  バージョン2.0をインストール
$ pip install 'python-dateutil<2.0'   バージョン2.0未満をインストール

パッケージの検索

#ライブラリを探す
$ pip search パッケージ名
#現在インストールされているライブラリとバージョンを表示
$ pip freeze

削除

#ライブラリの削除
$ pip uninstall パッケージ名

有用なライブラリ

  • NumPy(配列演算・統計・線形代数)
  • SciPy(科学計算・FFT・特殊関数など)
  • SymPy(電卓、代数方程式、微分方程式、簡単なプロット)
  • Pandas
  • matplotlib(2Dプロット)
  • Basemap Matplot Toolkit(matplotで地図を描くため)
  • rpy2(統計言語RをPythonから使う)
  • PyNGL NCLのpythonラッパー
  • PyNIO netcdf、grib等のファイルIO
  • PyGrADS gradsのpythonラッパー
  • netCDF4(netcdf4-python) netcdf4を扱うライブラリ

ライブラリインストール時のメモ

scipy
blas、lapack、fortarnコンパイラが必要
$ sudo apt-get install gfortran libblas-dev liblapack-dev g++
matplotlib
ft2build.h、png.hがないとエラーになる。freetype2とpngのライブラリが不足している。それぞれ公式サイトからソースを入手してコンパイルするかaptで探す。
  • ubuntu11.10/12.04
$ sudo apt-get install libfreetype-dev libpng-dev
  • エラー
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
解決
$ sudo apt-get install g++
  • エラー
backendにTkAggを指定してplt.show()しようとすると
    import _tkagg
ImportError: No module named _tkagg
などと出る。これはtkの開発関連ライブラリが足りていない。
$ sudo apt-get install tk-dev
でインストールしてからmatplotlibをビルドし直す。
SymPy
エラーが出て入らないので本家サイトからダウンロードしてsetup.pyをたたいた。

テスト

テストメソッドが用意されている場合はテストするといい。numpy、scipyの場合は
numpy.test()
scipy.test()
ライブラリnoseが必要なので先にインストールしておく。
netcdf4-python
hdf5(http://www.hdfgroup.org/ftp/HDF5/current/src/)をコンパイル。
$ ./configure --prefix=/usr/local/hdf5-x.y.z --enable-shared --enable-hl
$ make
$ sudo make install
netcdf4(ftp://ftp.unidata.ucar.edu/pub/netcdf/)をインストール。
$ ./confgure --prefix=/usr/local/netcdf4-x.y.z LDFLAGS=-L/usr/local/hdf5-x.y.z/lib CPPFLAGS=-I/usr/local/hdf5-x.y.z/include --enable-dap --enable-shared
$ make
$ sudo make install
netcdf4-pythonをコンパイル
$ export HDF5_DIR=/usr/local/hdf-5.1.8.10
$ export HDF5_LIBDIR=/usr/local/hdf-5.1.8.10/lib
$ export HDF5_INCDIR=/usr/local/hdf-5.1.8.10/include
$ export NETCDF4_DIR=/usr/local/netcdf-4.1.3
$ export NETCDF4_LIBDIR=/usr/local/netcdf-4.1.3/lib
$ export NETCDF4_INCDIR=/usr/local/netcdf-4.1.3/include
$ sudo -E python setup.py install
basemap
pip install basemapでなぜかインストールできないのでソースからpython setup.py installした。依存ライブラリで以下が必要。
  • geos
  • proj
  • PIL
geosとprojはaptでも入る(libgeos-dev、libproj-devとか?)。今回は最新をソースからコンパイルして/usr/localにインストール。PILは既に入っていた。aptでもpipでもOK。
exampleディレクトリの中にいろいろあるのでテストしてみる。
メモ

intelコンパイラ+MKLでnumpy/scipyをインストール

こちらを参考。パスが通っているとしてsite.cfgの最後に
[mkl]
mkl_libs = mkl_intel_ilp64,mkl_intel_thread,mkl_core
lapack_libs=
とかいて
$ python setup.py config --compiler=intelem --fcompiler=intelem build_clib --compiler=intelem 
--fcompiler=intelem build_ext --compiler=intelem --fcompiler=intelem install
あんまり自信ない。
TCL/TKを自分でコンパイルする場合
Tkinterはpythonに含まれているのでpythonをビルドするときにTcl/Tkのパスが通ってないとコンパイルされない。aptやyumなら後から入れればいいい。管理者権限がない場合はpythonをビルドするときにmakefileにincludeパスとlibraryパスを追加して追加でsetup.pyを叩く。

PyPy

PythonのPython実装で速いらしい。レポジトリを追加してインストール。
$ sudo add-apt-repository ppa:pypy/ppa
$ sudo apt-get update
$ sudo apt-get install pypy

emacs

python-mode

emacsに標準搭載のPythonモードはまだ発展途上で使いづらい。python-modeを入れた。ルート権限があれば
$ sudo apt-get install python-mode
で使えるようになる。ルートでない場合はこちらからダウンロードする。~/.emacs.d/の適当なところにおいてinit.elにパスを通す。あとはsetup.pyをたたけばたぶんいける(試してない)。el-get等のパッケージ管理システムで入れるのが便利。
C-c #コメントアウト
C-u C-c #コメントアウトを消す
C-c >1階層分インデントを増やす
C-c <1階層分インデントを減らす

IPython

ipython上でスクリプトを実行

%run script.py

インテルコンパイラ

非商用での利用に限りinterlコンパイラが無償で利用可能。
http://software.intel.com/en-us/non-commercial-sof...
から登録してダウンロード。
環境変数を自動設定するスクリプトが自動起動されるように~/.bashrcに、
# interl compiler
source /opt/intel/composerxe/bin/compilervars.sh intel64
と記入。

情報

管理人/副管理人のみ編集できます