2016-09-04 2 views
1

Ich versuche, python's scikit learn für etwas maschinelles Lernen zu installieren, und es scheint, es erfolgreich zu machen (d. H. Es ist bereits installiert). Jedoch, wenn ich versuche, es tatsächlich in python im Terminal zu verwenden, gibt es mir einen Fehler, wie unten gezeigt.Wo installiert `pip` Bibliotheken im Vergleich zu 'python` aus dem Terminal?

23:39 $ sudo pip install sklearn 
The directory '/Users/username/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 
The directory '/Users/username/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 
Collecting sklearn 
Requirement already satisfied (use --upgrade to upgrade): scikit-learn in /Library/Python/2.7/site-packages (from sklearn) 
Installing collected packages: sklearn 
Successfully installed sklearn-0.0 
✔ /usr/bin 
23:42 $ python 
Python 2.7.12rc1 (v2.7.12rc1:13912cd1e7e8, Jun 11 2016, 15:32:34) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sklearn 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Library/Python/2.7/site-packages/sklearn/__init__.py", line 57, in <module> 
    from .base import clone 
    File "/Library/Python/2.7/site-packages/sklearn/base.py", line 11, in <module> 
    from .utils.fixes import signature 
    File "/Library/Python/2.7/site-packages/sklearn/utils/__init__.py", line 11, in <module> 
    from .validation import (as_float_array, 
    File "/Library/Python/2.7/site-packages/sklearn/utils/validation.py", line 16, in <module> 
    from ..utils.fixes import signature 
    File "/Library/Python/2.7/site-packages/sklearn/utils/fixes.py", line 324, in <module> 
    from scipy.sparse.linalg import lsqr as sparse_lsqr 
    File "/usr/local/lib/python2.7/site-packages/scipy/sparse/linalg/__init__.py", line 112, in <module> 
    from .isolve import * 
    File "/usr/local/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/__init__.py", line 6, in <module> 
    from .iterative import * 
    File "/usr/local/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.py", line 7, in <module> 
    from . import _iterative 
ImportError: dlopen(/usr/local/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_iterative.so, 2): Symbol not found: ___addtf3 
    Referenced from: /usr/local/opt/gcc/lib/gcc/6/libquadmath.0.dylib 
    Expected in: /usr/lib/libSystem.B.dylib 
in /usr/local/opt/gcc/lib/gcc/6/libquadmath.0.dylib 
>>> exit() 
✔ /usr/bin 
23:43 $ which python 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python 

Ich denke, es muss einen Unterschied zwischen dem, wo die Pakete installiert werden von pip install <package name> und wo sie tatsächlich zugegriffen werden, wenn ich python im Terminal nennen.

Was ist der Unterschied zwischen:

1), wobei Pakete über pip install <package name> installiert sind?

UND

2), wo die Pakete werden gesucht, wenn python vom Terminal Aufruf?

Ich setze die Ergebnisse von which python an der Unterseite, weil ich denke, dass das nützlich sein könnte. Auch Leute, ich benutze Mac OS El Capitan Version 10.11.4.

+0

Scheint wie fehlende Abhängigkeiten, möglicherweise BLAS. Versuchen Sie, scikit aus dem Paket-Manager Ihrer Distro zu installieren, pip ist [entmutigt] (http://scikit-learn.org/stable/install.html). –

+1

@TobiaTesan es ist unter Linux entmutigt. Es scheint, dass diese Frage OSX verwendet –

+1

Sie sollten nicht Sudo mit Pip verwenden, aber die Antworten auf Ihre Frage existiert in diesen Protokollen. Pakete werden im Verzeichnis site-packages der Python-Installation installiert. Sie müssen feststellen, warum es ein '/ Library/Python/2.7/site-packages' im Vergleich zu'/usr/local/lib/python2.7/site-packages' gibt, obwohl –

Antwort

0

Dieses Problem hat nichts mit Python-Paketpfaden zu tun. Es ist auf das unaufgelöste Symbol ___addtf3 zurückzuführen, das eine GCC-Software-Fließkomma-Routine ist, die von einer gfortran-Bibliothek bereitgestellt wird. A similar issue with a different application (völlig unabhängig von Python) wurde gelöst, indem die Umgebungsvariable DYLD_LIBRARY_PATH richtig gesetzt wurde. Natürlich müssen Sie diese Bibliotheken auf Ihrem System installiert haben, was in Ihrem Fall das eigentliche Problem sein kann.

+0

seltsam. Warum sollte das nur mit 'sklearn' geschehen? – Candic3

+1

@ Candic3 Wahrscheinlich, weil 'sklearn' das erste Paket auf Ihrer Seite ist, das' scipy' benötigt (was wiederum von diesen Fließkomma-Routinen abhängt). – Leon

+0

ja, aber 'import scipy' funktioniert gut. – Candic3

Verwandte Themen