2015年1月24日土曜日

pythonzとvirtualenvでPythonの複数バージョン共存の環境構築

Pythonの進化

Pythonは今現在も進化しており、バージョンによってかなり違ってきます。
特にPython 3は根本から見直されており、Python 2から大幅に変更されています。
ですからスクリプトをテストするにもどのバージョンで動くのかは重要になってきます。

新規で作るなら新しいほうが将来性があるのですが、古いバージョンで確かめなければならない時もあり、一様に新しければ良いと言うものでもありません。

そこで一つのシステムで複数バージョンの共有環境を作ります。

複数バージョンの共有

複数バージョンの共有は単純にフォルダを分けてもできないことはないのですが、ライブラリや管理ツールなどどこで何に依存しているかわからなくなってしまうためここは、複数バージョンを分離してインストール出来るpythonzとPythonを仮想化して動かせるvirtualenvを使用して複数バージョンを安全に管理したいと思います。

現在のシステム環境:

カーネル: Linux
カーネルバージョン: 3.10.0-123.el7.x86_64
ディストリビューション: CentOS 7
システムのPythonバージョン: 2.7.5

virtualenvをインストール

まずvirtualenvをpipでインストール
pipが入ってない人はyumかeasy_installで入れてください。

$ sudo easy_install pip
$ sudo pip install virtualenv

ついでにvirtualenvwrapperというvirtualenvを便利に使うためのツールもインストールします。
$ sudo pip install virtualenvwrapper


シェルのスタートアップファイルに以下を追記します。
$ vi ~/.bashrc

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel 
source /usr/bin/virtualenvwrapper.sh

WORKON_HOMEはそのディレクトリに仮想環境が構築されるという意味です。
PROJECT_HOMEはプロジェクトを作成するときに使用します。
virtualenvwrapperの位置は環境に依存します。

$ which virtualenvwrapper.sh

で位置をたしかめてください。
シェルに反映させてバージョン確認ができれば成功です。

$ virtualenv --version
12.0.5

pythonzのインストール

pythonzはシステムのPythonを元に構築されるのでシステムに2.6以上のPythonと開発ツール、以下の開発ライブラリが必要です。
$ sudo yum groupinstall "Development tools"

zlib-devel bzip2-devel openssl-devel readline-devel ncurses-devel sqlite-devel gdbm-devel db4-devel expat-devel libpcap-devel xz-devel pcre-devel

CentOS 7では以下のライブラリが足りなかったので追加してからpythonzのインストールを行います。
$ sudo yum install zlib-devel openssl-devel

pythonzのインストール
$ curl -kL https://raw.github.com/saghul/pythonz/master/pythonz-install | bash

~/.bashrcに以下を書き込み
[[ -s $HOME/.pythonz/etc/bashrc ]] && source $HOME/.pythonz/etc/bashrc

以上でpythonzがhome配下にインストールされますが、PYTHONZ_ROOT=パス のオプションで任意の場所にインストールできます。
ちなみに環境変数は/etc/profile.d/pythonz.sh に書き込まれます。

インストールの確認
$ pythonz version
1.7.0

バージョン別のPythonをインストールするにはバージョンを指定するだけです。
インストール出来るバージョンは以下のコマンドで確認して下さい。
$ pythonz list -a

次は2.7.9 と 3.4.2のバージョンを取り込む例です。
$ pythonz install 2.7.9 3.4.2

少し時間がかかりますがInstalled CPython-(version) successfully.と出れば成功です。
$ pythonz list
# Installed Python versions
  CPython-2.7.9
  CPython-3.4.2
さて環境は整いましたのでPythonの仮想実行環境を作成しましょう。
mkvirtualenvコマンドで作成しま
-pオプションで使用するバージョンのPythonのパスを、その後ろに作成する仮想環境のディレクトリ名を指定します今回は分かりやすいpython27 python34としました。
&& deactivateは作成すると自動的に仮想環境内に入るため作成のみの場合はdeactivateを指定します。

$ mkvirtualenv -p ~/.pythonz/pythons/CPython-2.7.9/bin/python python27 && deactivate
$ mkvirtualenv -p ~/.pythonz/pythons/CPython-3.4.2/bin/python python34 && deactivate

$ workon
python27
python34

workonコマンドで作成された仮想環境を表示します。

では仮想環境内に入ってみましょう。
作られた仮想環境はWORKON_HOMEに指定された場所にあります。
$ ls .virtualenvs/
get_env_details  postdeactivate    postrmvirtualenv  premkproject     python27
initialize       postmkproject     preactivate       premkvirtualenv  python34
postactivate     postmkvirtualenv  predeactivate     prermvirtualenv
$ cd .virtualenvs/python34
$ ls
bin  include  lib

$ source bin/activate
(python34) $ 
$ python --version
Python 3.4.2
仮想環境へはsource コマンドでbinにあるactivateを反映させることで仮想環境内に入ることができます。入っていればシェルプロンプトの前に(仮想環境名)が表示されています。
versionを確かめてみれば確かにシステムと違うバージョンになっています。

これで通常の環境と同じようなPython仮想環境が作成できました。
deactivateコマンドでいつでも仮想環境から抜け出せます。

$ deactivate
$ python --version
Python 2.7.5




2015年1月18日日曜日

CentOS7にChromeを入れる

CentOS7をworkstationとして使用した場合にブラウザなどの環境を用意してwebアプリの開発に使用したりするでしょう。

そこでCentOS7にChromeをインストールしたいと思います。

Chromeは標準のリポジトリには含まれいないのでGoogleのリポジトリを追加します。
Chromeがあるリポジトリは度々場所が変わるのでいつの間にか使えなくなっている場合もあります。
現時点では以下のURL

[google-chrome]
name=google-chrome baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub


上記の内容を以下の場所に作成
# vim /etc/yum.repos.d/google-chrome.repo


登録出来たらyumでインストールできます。
# yum install google-chrome-stable
or
# yum install google-chrome-beta



確認できれば完成
$ google-chrome --version
Google Chrome 40.0.2214.85 beta










2015年1月12日月曜日

Fedora21の初期設定

 新しいFedora21はCloud、Server、Workstationの3エディションに別れより専門的になりました。
 開発者向けに自分で試すのでWorkstationをインストールしました。
まずは[端末]呼び出しを簡単にするためアクティビティに追加するため
端末は[アクティビティ]の一番下にある[アプリケーションを表示する]➙[ユーティリティ]➙[端末]を右クリック➙[お気に入りに追加]で追加できます。

さらに簡単に呼び出すためにショートカットキーを割り当てます。
[アクティビティ]➙[アプリケーションを表示する]➙[設定]➙[キーボード]➙[ショートカット] タブから[独自のショートカット]を選択し、名前と呼び出しコマンドを入力して設定したいショートカットキーを押せば完成です。
端末の呼び出しコマンドは「gnome-terminal」です。名前とキーは好きなものを設定してください。


日本語環境でインストールするとアイコンなどが日本語で使えて便利なのですが、ホームディレクトリが日本語だとterminalで操作するときに面倒です。
ですのでディレクトリは英語に変換しましょう。

$ LANG=C xdg-user-dirs-gtk-update

ダイアログが出るので更新の方のボタンを押して完了です。

メインユーザのsudo許可
インストール時にrootと一般ユーザ(メインユーザ)を作成すると思うのですが、初期設定でメインユーザはsudoの許可がありません。ですのでsudoが使えるように設定します。

root ALL=(ALL) ALL
ユーザ名 ALL=(ALL) ALL

以下が一番簡単な設定ですが、sudoに変更できるグループを作成してそのメンバーに所属させる方法でも良いかもしれません。

開発環境の整備

初期設定でgccなど開発ツールを入れていない場合はyumで追加します。
yumのgroupinstallを使用するとまとめてインストールできます。

$ yum grouplist

で開発ツールがあるか確認します。

$yum groupinstall "開発ツール"

日本語環境だと名前も日本語なのはちょっと違和感あります。
中身に何が有るかはgroupinfoで調べられます。

$ yum groupinfo "開発ツール"












2015年1月3日土曜日

Fedoea20にnode.jsをインストールする

Fedora 20にサーバーサイドJavaScript環境を作るnode.jsをインストールします。
以前はRedhat系にnode.jsをインストールするにはソースからビルドする必要があったのですが、今はyumパッケージが提供されているのでそれを利用して簡単にインストールできます。CentOSもepelで提供されています。

yumでnode.jsとnpmの提供確認

$ yum info nodejs
利用可能なパッケージ
名前                : nodejs
アーキテクチャー    : i686
バージョン          : 0.10.33
リリース            : 1.fc20
容量                : 514 k
リポジトリー        : updates/20/x86_64
要約                : JavaScript runtime
URL                 : http://nodejs.org/

$ yum info npm
利用可能なパッケージ
名前                : npm
アーキテクチャー    : noarch
バージョン          : 1.3.6
リリース            : 5.fc20
容量                : 995 k
リポジトリー        : installed
提供元リポジトリー  : updates
要約                : Node.js Package Manager
URL                 : http://npmjs.org/

バージョンも公式が0.10.35だったので最新に近いものが提供されていました。
因みにnode.jsとnodeは別物なので気をつけてください。

# yum install nodejs npm

$ node -v
$ npm -v

で表示されたら成功です。




2015年1月1日木曜日

Fedora 20にvimの環境を整える

vim-enhanced

Fedora 20でのデフォルトのvimはminimal版でvimを便利に使用したい人には物足りない。 そこでvimの強化版vim-enhancedをインストールします。

 まず、自分のvimを確認。

$ rpm -qa vim*
vim-minimal-7.4.475-2.fc20.x86_64

 vim-enhancedをインストール

 $ sudo yum -y install vim-enhanced

 vim-enhancedが確認できたら成功

 $ rpm -qa vim*
vim-common-7.4.475-2.fc20.x86_64
vim-minimal-7.4.475-2.fc20.x86_64
vim-enhanced-7.4.475-2.fc20.x86_64
vim-filesystem-7.4.475-2.fc20.x86_64

vimの環境設定

vimの共通環境は/etc/vimrc、個別設定は~/.vimrcに設定されています。
内容を見ながら自分に合うような環境に変更してください。



Pythonで地図空間データを扱う⑤

ベースの地図が出来た所で、他のデータを被せてみます。 国土地理院の  500mメッシュ別将来推計人口データ  を使用します。 同じく神奈川県のデータ  500m_mesh_suikei_2018_shape_14.zip をダウンロードします。 ベースの地図データと同じ場所に展開...