如何在 python 虚拟环境中导入 scikit-learn?
Posted
技术标签:
【中文标题】如何在 python 虚拟环境中导入 scikit-learn?【英文标题】:How to import scikit-learn in python virtual environment? 【发布时间】:2016-02-20 22:12:57 【问题描述】:问题
我正在尝试在虚拟环境中使用 scikit-learn,但无法运行。
因此,例如,我转到一个项目文件夹并安装 NumPy、SciPy 和 scikit-learn
virtualenv venv
source venv/bin/activate
pip install numpy
pip install scipy
pip install scikit-learn
然后我打开 python 并尝试导入它们中的每一个。
import numpy
import scipy
import sklearn
NumPy 和 SciPy 导入正常,但是当我尝试导入时,我收到错误消息 Library not loaded: @rpath/./libgfortran.3.dylib
。
我在安装过程中缺少什么吗?
完整的错误信息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/Peter/git/dataSandbox/flaskApps/sfSalary/venv/lib/python2.7/site-packages/sklearn/__init__.py", line 57, in <module>
from .base import clone
File "/Users/Peter/git/dataSandbox/flaskApps/sfSalary/venv/lib/python2.7/site-packages/sklearn/base.py", line 11, in <module>
from .utils.fixes import signature
File "/Users/Peter/git/dataSandbox/flaskApps/sfSalary/venv/lib/python2.7/site-packages/sklearn/utils/__init__.py", line 11, in <module>
from .validation import (as_float_array,
File "/Users/Peter/git/dataSandbox/flaskApps/sfSalary/venv/lib/python2.7/site-packages/sklearn/utils/validation.py", line 16, in <module>
from ..utils.fixes import signature
File "/Users/Peter/git/dataSandbox/flaskApps/sfSalary/venv/lib/python2.7/site-packages/sklearn/utils/fixes.py", line 324, in <module>
from scipy.sparse.linalg import lsqr as sparse_lsqr
File "/Users/Peter/git/dataSandbox/flaskApps/sfSalary/venv/lib/python2.7/site-packages/scipy/sparse/linalg/__init__.py", line 109, in <module>
from .isolve import *
File "/Users/Peter/git/dataSandbox/flaskApps/sfSalary/venv/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/__init__.py", line 6, in <module>
from .iterative import *
File "/Users/Peter/git/dataSandbox/flaskApps/sfSalary/venv/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.py", line 7, in <module>
from . import _iterative
ImportError: dlopen(/Users/Peter/git/dataSandbox/flaskApps/sfSalary/venv/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_iterative.so, 2): Library not loaded: @rpath/./libgfortran.3.dylib
Referenced from: /Users/Peter/git/dataSandbox/flaskApps/sfSalary/venv/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_iterative.so
Reason: image not found
编辑: 这是使用 sklearn 托管 Heroku 应用程序的一些故障排除。
【问题讨论】:
【参考方案1】:我强烈建议反对为 NumPy/SciPy/Scikit-learn 和其他包含编译代码的包使用虚拟环境。虚拟环境可以很好地处理纯 Python 依赖项,但对于具有 Python 外部依赖项的编译扩展,它们可能会以意想不到的方式失败(如您所见)。
如果您想使用不同版本的 Python 包(包括已编译的扩展)管理多个环境,最好的工具可能是 conda,尤其是 conda environments。
有了它,你可以运行以下命令:
$ conda create -n myenv python=3.4 numpy scipy scikit-learn
$ source activate myenv
(myenv) $ python
Python 3.4.3
>>> import sklearn
你会很高兴的。
【讨论】:
谢谢@jakevdp! Upvote 待定...是的,切换到 conda 环境是关键。对于任何可能感兴趣的人,这是为了在 Heroku 应用程序中使用 sklearn。结果发现另一个要求是更新 LD_LIBRARY_PATH。按照这个link,你应该很高兴 不错的答案,但是如果我想留在虚拟环境中而不切换到 conda 怎么办? 那么由你来手动管理你的虚拟环境与非python系统依赖的交互。以上是关于如何在 python 虚拟环境中导入 scikit-learn?的主要内容,如果未能解决你的问题,请参考以下文章
使用 scikit learn 在 Python 中导入数据集以解决机器学习问题数据集 Wisconsin Breast Cancer
scikit-learn 没有在 jupyter notebook 中导入
无法在 python 中导入模块:PyQt4 与 SIP 冲突