Python Pillow/PILライブラリをMavericks (10.9.5) で使えない


OS Marvericks で PillowもしくはPIL を使うを方法について質問させていただきます。

現在、Mac (OS 10.9.5 Mavericks) で Python を使用しており、Xcode(6.1), X11(2.7.7), The
freetype(2.5.3_1.), Python(2.7.6.), はすでにインストール済です。

画像処理をするために、Pillow (2.6.1) をインストールしました ([Python Pillow / PIL ライブラリを Mavericks
(10.9.5) にインストールできない](https://ja.stackoverflow.com/questions/5067/python-
pillow-
pil-%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92-mavericks-10-9-5-%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84))。

ところが実際に使用しようとするとエラーが出て、使用できません。類似したトラブルが本家 Stack Overflow
でも報告されており、参考にしましたが、使えずにおります。

詳しい現状は下記の通りです。同様のエラーを修正できた方、または Python に詳しい方がおりましたら、ご教示いただければ幸いです (当方、Python
を最近勉強し始めました)。

[code]

    pip install pillow
    
[/code]

で、pillow はインストールされました。  
インストール済は下記の通りです。

[code]

    $pip freeze
    Pillow==2.6.1
    PyOpenGL==3.1.0
    arrow==0.5.0
    nose==1.3.3
    numpy==1.9.0
    pygame==1.9.2pre
    pyserial==2.7
    python-dateutil==2.4.0
    six==1.9.0
    wsgiref==0.1.2
    
[/code]

PyCharmで試しに使用したところ (画像を提示するだけのプログラムを実行)、下記エラーが出ました。

[code]

    ImportError: '関数名' can not be initialized. 
    The Python package 'Python Imaging Library (PIL)' is not installed. 
    Exception AttributeError: "'関数名' object has no attribute 'compression_filename'" 
    in <bound method 関数名.__del_ of <関数名 object at 0x2b55b0>> ignored
    
[/code]

この時、pillowをimportしていなかったので
(他に実験制御系ライブラリを使用しており、そのライブラリをインストールしたあとは、pillowをインストールすれば自動的に使える、と開発者から言われたためです。このライブラリ自体は、pillowを使うようなプログラム以外は問題なく使えます)、プログラムに

[code]

    import pillow
    
[/code]

とし、再度実行したところ、

[code]

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ImportError: No module named pillow
    
[/code]

が出て、使えずにおります。

ライブラリのインストール方法やパス設定など、私の勉強不足かもしれませんが、よろしくお願いします。

* * *

##  2015/2/12 追記 実行したプログラムのエラー詳細です

[code]

    import expyriment
    import PIL
    
    exp = expyriment.design.Experiment(name="test")
    
    expyriment.control.initialize(exp)
    
    mask = expyriment.stimuli.extras.VisualMask(size=(100, 100))
    mask.preload()
    
    expyriment.control.start(exp)
    
    mask.present()
    exp.clock.wait(2000)
    
    expyriment.control.end()
    
[/code]

上記プログラムを実行すると、下記エラーが生じます。

[code]

    /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/ユーザ名/PycharmProjects/first_test/test0.py
    Expyriment 0.7.0 (Revision 7a6b73d; Python 2.7.6) 
    File: test0.py (91a9a8)
    Traceback (most recent call last):
      File "/Users/ユーザ名/PycharmProjects/first_test/test0.py", line 9, in <module>
        mask = expyriment.stimuli.extras.VisualMask(size=(100, 100))
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/expyriment/stimuli/extras/_visualmask.py", line 61, in __init__
        raise ImportError(message)
    ImportError: VisualMask can not be initialized.
    The Python package 'Python Imaging Library (PIL)' is not installed.
    Exception AttributeError: "'VisualMask' object has no attribute '_compression_filename'" in <bound method VisualMask.__del__ of <expyriment.stimuli.extras._visualmask.VisualMask object at 0x2b55b0>> ignored
    
    Process finished with exit code 1
    
[/code]




おそらくpipとnumpyはhomebrewでインストールしていて、pipでインストールしたライブラリのパスがPYTHONPATHに含まれていない、という状態になっていると予想しています。その前提で回答させていただきます。

まず、pipで適当に何かインストールし、どのディレクトリにインストールされたかメモしておいて下さい。以前の質問で確認していただいた`arror`でもいいです。インストール済みの場合は一度`pip
uninstall arrow`でアンインストールして、再度インストールして下さい。インストールログの中でパスが表示され、パスの中に`site-
packages`というディレクトリがあるはずです。

ターミナル上で`echo
$PYTHONPATH`を実行してPYTHONPATHが設定されているか確認して下さい。（おそらく何も出力されないと思いますが、）出力に上記の`site-
packages`を含むパスは含まれているでしょうか？

また、pythonのインタープリタまたはスクリプトで以下を実行し、出力の中に先ほどのパスが含まれているか確認して下さい。

[code]

    import sys
    print(sys.path)
    
[/code]

両方にパスが含まれていない場合、PATHの設定が必要です。`~/.bash_profile`か`~/.profile`を開き（なければ作ってください）、先ほどのパス（`site-
pachages`へのパス）を設定してください。

[code]

    # ついでにシステムのPythonのライブラリも追加。しなくても良いはず
    export PYTHONPATH=/Library/Python/2.7/site-packages:$PYTHONPATH
    # 例: export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
    export PYTHONPATH=/(pipでのインストール先のパス)/site-packages:$PYTHONPATH
    # または、homebrew使用なら次の書き方でもいいはずです
    export PYTHONPATH=`brew --prefix`/lib/python2.7/site-packages:$PYTHONPATH
    
[/code]

以上の設定をして、 ~~新たにターミナルを立ち上げ~~
一旦ログアウトしてログインしなおし、pythonインタープリタを起動し、importを試してみて下さい。

* * *

### 2015年2月11日 追記

以下のコマンドをターミナルで上から順に一行ずつ実行して下さい。二行目のパスの部分はご自分の環境に合わせて修正してください。

[code]

    echo "export PYTHONPATH=/Library/Python/2.7/site-packages:$PYTHONPATH" >> ~/.bash_profile
    echo "export PYTHONPATH=/(pipでのインストール先のパス)/site-packages:$PYTHONPATH" >> ~/.bash_profile
    echo "export PYTHONPATH=`brew --prefix`/lib/python2.7/site-packages:$PYTHONPATH" >> ~/.bash_profile
    
[/code]

その上で、一旦ログアウトしてログインし直し、再度pythonのインタープリターを立ち上げてimportを試してみてください。




おそらくpipとnumpyはhomebrewでインストールしていて、pipでインストールしたライブラリのパスがPYTHONPATHに含まれていない、という状態になっていると予想しています。その前提で回答させていただきます。

まず、pipで適当に何かインストールし、どのディレクトリにインストールされたかメモしておいて下さい。以前の質問で確認していただいた`arror`でもいいです。インストール済みの場合は一度`pip
uninstall arrow`でアンインストールして、再度インストールして下さい。インストールログの中でパスが表示され、パスの中に`site-
packages`というディレクトリがあるはずです。

ターミナル上で`echo
$PYTHONPATH`を実行してPYTHONPATHが設定されているか確認して下さい。（おそらく何も出力されないと思いますが、）出力に上記の`site-
packages`を含むパスは含まれているでしょうか？

また、pythonのインタープリタまたはスクリプトで以下を実行し、出力の中に先ほどのパスが含まれているか確認して下さい。

[code]

    import sys
    print(sys.path)
    
[/code]

両方にパスが含まれていない場合、PATHの設定が必要です。`~/.bash_profile`か`~/.profile`を開き（なければ作ってください）、先ほどのパス（`site-
pachages`へのパス）を設定してください。

[code]

    # ついでにシステムのPythonのライブラリも追加。しなくても良いはず
    export PYTHONPATH=/Library/Python/2.7/site-packages:$PYTHONPATH
    # 例: export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
    export PYTHONPATH=/(pipでのインストール先のパス)/site-packages:$PYTHONPATH
    # または、homebrew使用なら次の書き方でもいいはずです
    export PYTHONPATH=`brew --prefix`/lib/python2.7/site-packages:$PYTHONPATH
    
[/code]

以上の設定をして、 ~~新たにターミナルを立ち上げ~~
一旦ログアウトしてログインしなおし、pythonインタープリタを起動し、importを試してみて下さい。

* * *

### 2015年2月11日 追記

以下のコマンドをターミナルで上から順に一行ずつ実行して下さい。二行目のパスの部分はご自分の環境に合わせて修正してください。

[code]

    echo "export PYTHONPATH=/Library/Python/2.7/site-packages:$PYTHONPATH" >> ~/.bash_profile
    echo "export PYTHONPATH=/(pipでのインストール先のパス)/site-packages:$PYTHONPATH" >> ~/.bash_profile
    echo "export PYTHONPATH=`brew --prefix`/lib/python2.7/site-packages:$PYTHONPATH" >> ~/.bash_profile
    
[/code]

その上で、一旦ログアウトしてログインし直し、再度pythonのインタープリターを立ち上げてimportを試してみてください。

