

python 2.7.10  
pyenvを使用

[code]

    
    python
    Python 2.7.10 (default, May  7 2016, 10:54:58)
    [GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import dlib
    zsh: segmentation fault  python
    
    
[/code]

になります。。。

dlibを使用しているpythonを実行すると

[code]

    
    import os
    import sys
    import glob
    import dlib
    from skimage import io
    
    
[/code]

の`import dlib`のところで

[code]

    
    Traceback (most recent call last):
      File "./gen_detector.py", line 7, in 
        import dlib
    ImportError: No module named dlib
    
    
[/code]

になります。。。

おそらくdlibにpathが通っていないからだと思ったのですがzshrcをみてみると

[code]

    
    export PYENV_ROOT=$HOME/.pyenv
    export PATH=$PYENV_ROOT/bin:$PATH
    
    export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
    
    
[/code]

を書いていたのでpathは問題ないかと思いました。`import numpy`などはうまくいきます。

かなりハマっておりますので解決方法をご教示いただけると幸いです。  
よろしくお願いします！


CC BY-SA 3.0
2016-05-07T03:34:21.257
24625
2016-10-11T07:39:49.893
2016-05-07T03:43:36.827
5246
13652
question
python
import dlibでzsh: segmentation fault pythonがでます


**1\. pyenv init**

`which
python`の結果は`/Users/YYYYYY/.pyenv/shims/python`になっていますか？もし`/usr/bin/python`になっていたら、`pyenv`のpythonは使用されていません。  
`if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi`  
を`.bash_profile`などに追加しているかご確認下さい。  
これを行うことで、`$PATH`に`~/.pyenv/shims`が含まれるようになり、これにより`python`・`pip`などが適切に使用できます。  
これを行わずにインストールしたライブラリは、`.pyenv`下ではなくシステムにインストールされているかもしれません。

参考: <https://github.com/yyuu/pyenv#advanced-configuration>

**2.`PYTHONPATH`の設定**

`pyenv`を使用しているので、必要なライブラリは`~/.pyenv/versions/XXXXXX/lib/`にインストールされていると思います。  
`PYTHONPATH`を設定してしまうと、pyenvでインストールしたライブラリではなく、システムに入っているライブラリを優先して読み込むことになってしまいます。

[code]

    % python
    Python 3.5.1 |Anaconda custom (x86_64)| (default, Dec  7 2015, 11:24:55)
    [GCC 4.2.1 (Apple Inc. build 5577)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys
    >>> print(sys.path)
    ['', '/Users/YYYYYY/.pyenv/versions/XXXXXX/lib/python35.zip', '/Users/YYYYYY/.pyenv/versions/XXXXXX/lib/python3.5', ...
    
[/code]

といったように、sys.pathが適切になっていれば、`PYTHONPATH`の設定は不要です。

というわけで、`PYTHONPATH`の設定を消す→`pyenv init`を設定ファイルに追加→シェルを再起動して`pyenv
versions`で(systemではなく)使用したいバージョンが適切に設定されているか確認→`pip install`でライブラリをインストール  
といったところをいま一度御確認ください。


CC BY-SA 3.0
2016-05-07T04:46:11.793
24628
2016-05-07T04:52:26.733
2016-05-07T04:52:26.733
6092
6092
24625
answer