5876


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]


CC BY-SA 3.0
2015-02-03T11:34:16.510
5875
2015-02-12T03:19:41.723
2020-06-17T08:14:45.997
-1
7677
question
python macos pil pillow
Python Pillow/PILライブラリをMavericks (10.9.5) で使えない


おそらく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を試してみてください。


CC BY-SA 3.0
2015-02-03T12:10:13.523
5876
2015-02-11T13:46:39.930
2015-02-11T13:46:39.930
3589
3589
5875
answer


参考までに私の環境(OS X Mervericks)でpillowに依存するqrcodeを動作させてみましたが、  
特に問題なく動作しました。インストールはターミナルから以下の様に実行しています。

[code]

    $ sudo easy_install pip
    $ sudo pip install pillow
    $ sudo pip install qrcode
    
[/code]

コードは長くなるので掲載できませんが、pillowがないと動作しないので動作はできていると思います。  
なお、環境変数PYTHON_PATHは特に指定していません（envコマンドで確認できません）。

* * *

pillowがインストールされても `import pillow` はエラーとなります。`import PIL` を試してみてください。  
PyCharmをお使いとのことですが、Macのターミナルから以下を実行した場合はどうでしょうか。

[code]

    $ python
    >>> import PIL
    >>> exit()
    
[/code]

PyCharmで確認する場合はPyCharmのToolメニューからPython Consoleを開き、

[code]

    >>> import PIL
    
[/code]

を試してみてください。  
PyCharmから起動させる場合の動作を確認するにはこちらの方が良いですね。

また、PyCharmではプロジェクト設定でproject
interpreterがどう設定されているかも確認してみてください。特に複数バージョンのPythonが入っている場合、どのPythonにpillowがインストールされたかも問題になります。  
確認するには `PyCharm` > `Preferences` から  
`project: プロジェクト名`の下にある project interpreterを選択して確認できます。

![project interpreter](https://i.stack.imgur.com/IZ1Kc.png)

追記：

ターミナルから確認するのは、`import pillow`ではなく`import PIL`でした。  
`import pillow`は私のMac環境、Windows環境いずれでもエラーになります。

[code]

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


CC BY-SA 3.0
2015-02-11T14:58:51.553
6333
2015-02-11T15:24:12.157
2015-02-11T15:24:12.157
728
728
5875
answer