忍者ブログ
日々の感想などどうでもよいことを書き連ねるためだけのブログ。
MacPorts を使って Python 3 をインストールしたいの続きです.

Python 3 をインストールしましたが,仕事でエクセルファイルを扱うために専用のモジュールである xlrd が必要だったので,これのインストールを試みました.この xlrd は Python でエクセルを読み込むためのモジュールで,書き出すためには別の xlwt というモジュールが必要になるようです.

今回はとりあえず読み込むだけで良いので,xlrd のみをインストールします.

EasyInstall でインストール出来るらしい

EasyInstall で xlrd を文字通り簡単にインストール出来るらしいので,それを試みました.
% sudo easy_install xlrd
Password: (パスワード入力)
Searching for xlrd
Reading https://pypi.python.org/simple/xlrd/
Best match: xlrd 0.9.4
Downloading https://pypi.python.org/packages/source/x/xlrd/xlrd-0.9.4.tar.gz#md5=911839f534d29fe04525ef8cd88fe865
Processing xlrd-0.9.4.tar.gz
Writing /tmp/easy_install-vG70oP/xlrd-0.9.4/setup.cfg
Running xlrd-0.9.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-vG70oP/xlrd-0.9.4/egg-dist-tmp-7ubbXJ
zip_safe flag not set; analyzing archive contents...
xlrd.xlsx: module references __file__
Adding xlrd 0.9.4 to easy-install.pth file
Installing runxlrd.py script to /usr/local/bin

Installed /Library/Python/2.7/site-packages/xlrd-0.9.4-py2.7.egg
Processing dependencies for xlrd
Finished processing dependencies for xlrd
ほぼ一瞬で終わりました.
これでインストール出来ているはずでしたが…?


試しにプログラムを実行してみると,以下のようになりました.
% python hogehoge.py
Traceback (most recent call last):
File "hogehoge.py", line XX, in
import xlrd
ImportError: No module named 'xlrd'
「xlrd がありません」と怒られてしまいました.インストール出来ていない様子… (あるいは設定が上手く行っていない)

Python 公式からダウンロード

仕方ないので Python の公式からダウンロードしてインストールすることにしました.
Python 公式の xlrd 配布ページはこちら.
xlrd 0.9.4 : Python Package Index

ここに置かれている,"xlrd-0.9.4.tar.gz" をクリックしてダウンロードします (バージョンの数字は最新版のバージョン次第で変わります).どこか適当なディレクトリに保存してもいいですが,とりあえずはダウンロードフォルダに保存して展開することにします.

そうするとダウンロードフォルダ内に "xlrd-0.9.4" というディレクトリが出来ます.インストールの作業は,このディレクトリ内で行うため,ひとまずこのディレクトリへ移動します.
% cd Downloads/xlrd-0.9.4
ディレクトリの中身を確認します.
% ls
PKG-INFO scripts tests
README.html setup.py xlrd
"setup.py" があることが分かります.

このファイルのヘルプを参照してみます.
% python setup.py --help
Common commands: (see '--help-commands' for more)

setup.py build will build the package underneath 'build/'
setup.py install will install the package

Global options:
--verbose (-v) run verbosely (default)
--quiet (-q) run quietly (turns verbosity off)
--dry-run (-n) don't actually do anything
--help (-h) show detailed help message
--no-user-cfg ignore pydistutils.cfg in your home directory
--command-packages list of packages that provide distutils commands

Information display options (just display information, ignore any commands)
--help-commands list all available commands
--name print package name
--version (-V) print package version
--fullname print -
--author print the author's name
--author-email print the author's email address
--maintainer print the maintainer's name
--maintainer-email print the maintainer's email address
--contact print the maintainer's name if known, else the author's
--contact-email print the maintainer's email address if known, else the
author's
--url print the URL for this package
--license print the license of the package
--licence alias for --license
--description print the package description
--long-description print the long package description
--platforms print the list of platforms
--classifiers print the list of classifiers
--keywords print the list of keywords
--provides print the list of packages/modules provided
--requires print the list of packages/modules required
--obsoletes print the list of packages/modules made obsolete

usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help
というわけで,"setup.py install" を実行すると xlrd のセットアップが出来るはずです.
% python setup.py install
running install
running build
running build_py
running build_scripts
running install_lib
creating /opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/xlrd
error: could not create '/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/xlrd': Permission denied
…Permission denied と出てインストールが出来ませんでした.管理者権限が必要な模様です.なのでこっちで再実行してみます.
% sudo python setup.py install
Password: (パスワード入力)
running install
running build
running build_py
running build_scripts
running install_lib
creating /opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/xlrd

(途中省略)

Writing /opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/xlrd-0.9.4-py3.3.egg-info
これで無事 xlrd をインストールすることができ,ちゃんと動くことも確認しました.



今回の作業に際して参考にしたサイト:

拍手[0回]

PR

仕事の関係上 Python 3 をインストールする必要がありましたが,これまで Python 2 どころか Python そのものを触ったことすらありませんでした.それに加えて Python でエクセルファイルを取り扱う必要もあるということで,いろいろと作業環境を構築する必要がありました.

というわけで,まずはMac への Python 3 のインストールを試みました.

MacPorts のアップデート

と言いつつここまでろくに何もアップデートしていなかったので,インストールするための準備すらなっていませんでした.

Python のインストールには MacPorts か Homebrew が良いとされていますが,今回は MacPorts を用いてインストールを試みました.この Macports はアップデートしないといけないみたいですが,全然していなかったのでそれから行います.

アップデートは以下のように管理者権限で,"port selfupdate" を実行すれば OK.
% sudo port selfupdate
Password: (パスワード入力)
---> Updating MacPorts base sources using rsync
MacPorts base version 2.3.3 installed,
MacPorts base version 2.3.4 downloaded.
---> Updating the ports tree
---> MacPorts base is outdated, installing new version 2.3.4
Installing new MacPorts release in /opt/local as root:admin; permissions 0755


The ports tree has been updated. To upgrade your installed ports, you should run
port upgrade outdated
数分程度ごちゃごちゃと表示が出ましたが,しばらくしてアップデートは終了しました.

Python 3 のインストール

次に Python 3 のインストールを試みます.

Mac にはデフォルトで Python 2 が入っているということなので,とりあえず現在のバージョンを確認してみます.
% python --version
Python 2.7.10
Python 2.7.10 が入っていることが分かりました.

ここで新しく Python 3 を入れてみます.同じく sudo で "port install" を実行.今回は Python 3.3 をインストールすることにし,install の後には "python33" を指定します.
% sudo port install python33
Password: (パスワード入力)
---> Fetching archive for ncurses
---> Attempting to fetch ncurses-6.0_0.darwin_14.x86_64.tbz2 from https://packages.macports.org/ncurses
---> Attempting to fetch ncurses-6.0_0.darwin_14.x86_64.tbz2.rmd160 from https://packages.macports.org/ncurses
---> Installing ncurses @6.0_0
---> Cleaning ncurses
---> Deactivating ncurses @5.9_2
---> Cleaning ncurses
---> Activating ncurses @6.0_0
---> Cleaning ncurses

(途中省略)

---> Installing python33 @3.3.6_6
---> Activating python33 @3.3.6_6

To make this the default Python or Python 3 (i.e., the version run by the
'python' or 'python3' commands), run one or both of:

sudo port select --set python python33
sudo port select --set python3 python33

---> Cleaning python33
---> Updating database of binaries
---> Scanning binaries for linking errors

(途中省略)

---> Updating database of binaries
---> Scanning binaries for linking errors
---> No broken files found.
このように長々とログが出てインストールが完了します.そこそこの時間がかかりました.

さてログの途中に以下のメッセージが出ています.
To make this the default Python or Python 3 (i.e., the version run by the
'python' or 'python3' commands), run one or both of:

sudo port select --set python python33
sudo port select --set python3 python33
これに従って,Python 3.3 をデフォルトにするために,以下のコマンドを実行しました.
% sudo port select --set python python33
Password: (パスワードを入力)
Selecting 'python33' for 'python' succeeded. 'python33' is now active.
これで Python 3.3 の方がデフォルトになり,"python" を打った時に Python 3.3 を選択してくれるようになりました.



続き:
エクセル読み込み用ツールの xlrd をインストールしたい


今回の作業に際して参考にしたサイト:
MacPortsを使ってPython3.4をインストール - Yo Yo hey Yo

拍手[0回]


LaTeXで文章を書いている時のメモ。

"book"で文書を作成する際はページのヘッダ部分に各チャプターの名前も表示されます。この部分の事は「」とも呼ぶようです。

チャプター名に長いものを用いると、ヘッダ部分にもその長い名称がそのまま表示されるため、ヘッダにあるページ番号と被ってしまったり、最悪ページからはみ出して途切れてしまったりします。

こういう場合は、
\chapter[短縮チャプター名]{本来の非常に長いチャプター名}
と書くことで、目次とヘッダには "短縮チャプター名" が表示され、そのページには "本来の非常に長いチャプター名" が表示できるようになります。

いやはや、見出しにもこういうオプションがあるとは全く知らなかった…

拍手[0回]


さてパソコンを新しいのに変えて、おおかたはTimeMachineからのデータ移行でスムーズに引継ぎができたんですが、X11が入っていないから別途入れる必要があるなど、多少の作業は必要なだったというのが前回でした。

Dockのアイコンが「?」になっているものが「X11」と「Xcode」だったのですが、X11についてはMountain Lion以降のOSにはそもそも付属していないため、XQuartzを別途入れる必要があったのでした。
これ自体は知ってしまえばどうということはなく、XQuartzをダウンロードできるサイトに行ってインストーラをダウンロードし、インストーラを起動すれば無事解決しました。
そもそも、使えなくなった状態のX11のアイコンをクリックした時点で、XQuartzを別途ダウンロードする必要があるという案内が出てきました。親切設計。

次の問題は、同じく「?」アイコンになっているXcodeです。
こちらはクリックしてもうんともすんとも言わなかったので、自分でダウンロードサイトに行ってダウンロードすることにしました。

XcodeはApp Storeで無料で公開されているアプリなので、「Xcode ダウンロード」などで検索すれば容易に辿り着くことができます。
App StoreからのダウンロードなのでApple IDが必要になりますが、既に持っている人はそのIDで、持っていない人は新規にアカウントを作ってしまえばいいと思います。
今回は既にApple IDを持っていたので、それでサインインしてダウンロードしました。

こちらもインストーラをダウンロードして開き、指示に従っていけばダウンロード&インストール完了です。
「アプリケーション」の中にXcodeが入っていて、ちゃんと起動できるようになりました。
初回起動の時はライセンス条項への同意などの作業が必要になりますが、それを済ませば以前のように使用できます。
試しに元からあったhtmlファイルをXcodeで開いてみましたが、これまでと同様の画面が開きました。


これでとりあえずはひと段落かと思ったのですが、しばらくして別の問題が露呈しました。
それは、
gfortranやgccが使えない...!!

CやFortranでコードを書いてコンパイルする際に使っているgccやgfortranですが、なんとそれが使えなくなっていたのです。
これじゃ仕事にならないので困ったものです。

いろいろ調べてみましたが、Yosemiteアップグレード時にgfortranが使えなくなったという報告があちこちに散見される。
どうやらこれは誰もが通る道のようです。

いろいろと解決策を探して試した結果、ここのサイトの流れに沿って対応した結果、最終的に上手く行きました。

リンク先にある通り、まずはターミナルで
% xcode-select --install
と入力。
そうするとウィンドウが出てくるので、指示に従って「インストール」をクリックします。

一応先ほどXcodeはインストールしたばかりでしたが、いろいろと面倒なので紹介されてる手順に沿ってもう一度やり直すことにします。(つまり前半部分は徒労であった...)

続いてライセンス条項に同意します。(さっき同意したばっかりだけど...)
さっきと同じように、インストールしたXcodeを起動してライセンス条項に同意してもいいですが、せっかく紹介されてるのでコマンドラインからやってしまいます。
% sudo xcodebuild -license
と打って入力すると、ライセンス条項の説明が出てきます。
ちょっとうろ覚えですが、同意する場合は"agree"と入力しろというメッセージが出てきたので、言われた通りに入力します。

そのあとはMacPortsをインストール。
まずはダウンロードサイトに飛びます。
ここの「Quickstart」の項目にも説明が書いてありますが、手順1のXcodeとXcode Command Line Toolsをインストールする作業は既に終わっています。
2番目のライセンス条項への同意もさっき済ませました。

そのすぐ下に、
OS X 10.10 Yosemite
があるのでこれを選択します。
ここも同様にインストーラがダウンロードされるので、それを開いて指示に従ってインストールすればそれでOKです。

続いて次の手順として、
% sudo port install gcc49
をすればいいということになります。
順調であれば、このコマンドを入力すると無事gccがインストールされるんでしょうが、今回はなぜか以下のエラーメッセージが出てしまい、インストールできませんでした。
% sudo port install gcc49
Password: (ここはパスワードを入力)
sudo: port: command not found

Nooooo!!!
"sudo port"、こんなコマンドはありません、と怒られてしまいました。
ちゃんと手順を守ってやってきたのにどうしてだ...!!
これが実行できないとgccもgfortranも使えるようにならないではないか。

これでしばらく悩んだんですが、どう考えてもsudoが使えないということはあり得ないので、問題なのはportというコマンドの方であると。
そこで再びいろいろ検索してみた結果、このサイト
に辿り着きました。

バージョンを確認するために
% port -v
と打ってみると。
うまくいけばバージョンが表示されるはずですが、なんらかの原因でうまくいってないとエラーが出るはずです。
試してみると案の定以下のようになりました。
% port -v
port: Command not found.
やはりコマンドがありませんと怒られます。

そこで上のリンク先にあるように、絶対パスを入力してみると、
% /opt/local/bin/port -v
MacPorts 2.3.3
Entering interactive mode... ("help" for help, "quit" to quit)
おお、ちゃんとバージョンが表示されました。
(書いてあるように、"help"と入力すればヘルプが、"quit"とか"q"と入力するとこの画面は終わって元のコマンドラインに戻ります)

コマンドが無いとかなんとか喚いたわけですが、要するにパスが通っていなかったというわけです。
パスが通ってなけりゃそりゃ使えませんね..。

というわけで、パスを通してやるか、全部書いて実行してやればいいわけです。
なので以下のとおり入力しました。
% sudo /opt/local/bin/port install gcc49
そうするとコマンドライン上にいろいろ文章が出てきて、インストールが始まります。

これはしばらく時間がかかるので、そのまま放置しておきます。
参考にしたリンク先には、「マシンのスペックによるが、1時間以上掛かる場合もある。」とありましたが、今回は数十分程度で終わったように思います。

無事インストールが終わった後、もう一つのコマンドも入力してやると、次のようになります。
% sudo /opt/local/bin/port select gcc mp-gcc49
Password: (ここにパスワードを入力)
Selecting 'mp-gcc49' for 'gcc' succeeded. 'mp-gcc49' is now active.
これで無事にインストールが完了したはずです。

試しにCやFortranのプログラムをgccやgfortranでコンパイルしてみましたが、無事にコンパイルすることができました。
これでとりあえずのところはひと段落です。

拍手[0回]


先日、使用しているパソコン(mac)を新しいものに更新しました。
これまで使用していたものはかなり古いMacbookで、そろそろ挙動も残念になってきていたので...

今回購入したのはMacBook Airの13インチ。
今まで使っていた白いMacBookに比べるとはるかに軽くて感動です。なんて持ち運びがしやすいのだろうか...!

新しいPCを買うと面倒なのがデータなどの移行ですが、前のパソコンはTimeMachineを使ってバックアップを取っていたので、そのデータを丸ごと移行することでほとんどそのままスムーズに移行することができました。

とりあえず新しいPCの電源を入れ、データの移行についての画面が出てきたらTimeMachineを選択し、指示に従っていろいろ操作するだけ。特に迷うところはありませんでした。

結構なデータ量があったため(これもちゃんと取捨選択して処分しなければ...)、データの移行には6-7時間ほどかかりましたが、まあデータ移行を開始したあとは放っておいて寝てしまえばなんとかなるでしょう。逆に日中からデータ移行を始めると終わるまで待つのが面倒かもしれません。


さてデータ移行も無事終わって、ほぼそのまま設定が引き継がれた新しいパソコンを使うことができます。
新しいmacなのでOSは当然Yosemiteです。
設定が引き継がれると言いましたが、デフォルトのデスクトップ画面は例のオーロラの画像じゃなくて、切り立った崖の写真に変わってました。(Yosemiteで撮られた写真なのかな?)

ブラウザのブックマークもそのまま引き継がれ、メールもアプリを初回に起動した時にちょっと読み込みに時間を費やす程度でほぼそのまま見られます。


ところがDockの方に目を移すと...いくつかアイコンが「?」になっているものが。
これをクリックしても当然何も起動しません。

今回の場合、アイコンが「?」になっていたのは「Xcode」と「X11」でした。

Xcodeはコードを書いたりhtmlを編集する際にしばしば使っていたので使えないのはちょっと困る。
もちろんテキストエディットやemacsなど代替できるアプリはいくつかあるし、最近はコード書くときはもっぱらemacsなわけですが...

X11のほうは、gnuplotなどで描画するときにグラフが出てこないので非常に困る。
試しにgnuplotを起動してグラフを出力してみましたが、何も表示されませんでした(当たり前ではある)

とりあえずネットで検索してみると、アップル公式からこのようなお達しが。
要するに、X11は入っていないから自分でXQuartzというものを入れてくださいね、ということのようです。
(ちなみに後から知りましたが、Yosemiteより遥か以前のMountain Lionの時点ですでにX11は入っておらず、自分でXQuartzをインストールする必要があるようです)

なので上のページのリンク先にアクセス。
リンク先の"Quick Download"にあるdmgファイルをクリックしてダウンロードして、ダウンロードが終わったらそれをクリックしてインストーラを起動します。

あとは指示に従って操作するだけ。
基本的には「続ける」ボタンの連打です。

そうすると無事インストールが終わるので、「アプリケーション」内の「ユーティリティ」内に「X11.app」ができていることを確認します。
ちゃんとX11.appが存在したらインストール成功です。


試しにちゃんと動作するか試しにコマンドラインからgnuplotを起動し適当なグラフを描いてみたところ、ちゃんと以前のように描画することができました。

これでX11問題は解決です。
まだXcodeが使えない問題が残ってますが、これはこの後に出てきた別の問題と一緒に解決できた(おそらく)ので、別で備忘録として残しときます。

拍手[0回]