在 Debian 上的 virtualenv 中 Pip 安装 scikit-learn 失败 - Raspberry PI - 无法构建 scikit-learn
Pip install scikit-learn fails in virtualenv on Debian - Raspberry PI - Failed to build scikit-learn
我在我的 Raspberry Pi 上创建了一个 virtualenv python3.5 3. 在激活的 virtualenv 中安装 scikit-learn 会引发错误。
我想在这个 virtualenv 中正确安装 scikit-learn 并且能够导入 sklearn。
我尝试通过以下方式安装:
pip 安装 scikit-learn,
sudo pip3 安装 scikit-learn,
此外,我尝试将 openblas 安装到 virtualenv,因为它似乎是必需的(我解释了错误代码)但没有快乐。
请注意,可以在 "base" python3 中的任何 virtualenv 之外安装 scikit-learn。在那里我可以成功安装和导入它。
pip install scikit-learn
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting scikit-learn
Using cached https://files.pythonhosted.org/packages/57/5c/133b464c8d0be7ac8c9414b6ff2ae848808a35ce03b146fc2c43777e51f9/scikit-learn-0.21.2.tar.gz
Requirement already satisfied: numpy>=1.11.0 in /home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages (from scikit-learn) (1.16.4)
Requirement already satisfied: scipy>=0.17.0 in /home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages (from scikit-learn) (1.3.0)
Requirement already satisfied: joblib>=0.11 in /home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages (from scikit-learn) (0.13.2)
Building wheels for collected packages: scikit-learn
Building wheel for scikit-learn (setup.py) ... error
ERROR: Complete output from command /home/pi/python_virtual_env/neural_networks/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1vothz0i/scikit-learn/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-tu89p36i --python-tag cp35:
ERROR: Partial import of sklearn during the build process.
blas_opt_info:
blas_mkl_info:
customize UnixCCompiler
libraries mkl_rt not found in ['/home/pi/python_virtual_env/neural_networks/lib', '/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
NOT AVAILABLE
blis_info:
customize UnixCCompiler
libraries blis not found in ['/home/pi/python_virtual_env/neural_networks/lib', '/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
NOT AVAILABLE
openblas_info:
customize UnixCCompiler
customize UnixCCompiler
customize UnixCCompiler
FOUND:
library_dirs = ['/usr/lib']
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
FOUND:
library_dirs = ['/usr/lib']
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 290, in <module>
setup_package()
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 286, in setup_package
setup(**metadata)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/core.py", line 137, in setup
config = configuration()
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 174, in configuration
config.add_subpackage('sklearn')
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1036, in add_subpackage
caller_level = 2)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1005, in get_subpackage
caller_level = caller_level + 1)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 942, in _get_configuration_from_setup_py
config = setup_module.configuration(*args)
File "sklearn/setup.py", line 66, in configuration
config.add_subpackage('utils')
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1036, in add_subpackage
caller_level = 2)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1005, in get_subpackage
caller_level = caller_level + 1)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 942, in _get_configuration_from_setup_py
config = setup_module.configuration(*args)
File "sklearn/utils/setup.py", line 8, in configuration
from Cython import Tempita
ImportError: No module named 'Cython'
----------------------------------------
ERROR: Failed building wheel for scikit-learn
Running setup.py clean for scikit-learn
Failed to build scikit-learn
Installing collected packages: scikit-learn
Running setup.py install for scikit-learn ... error
ERROR: Complete output from command /home/pi/python_virtual_env/neural_networks/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1vothz0i/scikit-learn/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-9myxktkm/install-record.txt --single-version-externally-managed --compile --install-headers /home/pi/python_virtual_env/neural_networks/include/site/python3.5/scikit-learn:
ERROR: Partial import of sklearn during the build process.
blas_opt_info:
blas_mkl_info:
customize UnixCCompiler
libraries mkl_rt not found in ['/home/pi/python_virtual_env/neural_networks/lib', '/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
NOT AVAILABLE
blis_info:
customize UnixCCompiler
libraries blis not found in ['/home/pi/python_virtual_env/neural_networks/lib', '/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
NOT AVAILABLE
openblas_info:
customize UnixCCompiler
customize UnixCCompiler
customize UnixCCompiler
FOUND:
define_macros = [('HAVE_CBLAS', None)]
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/lib']
language = c
FOUND:
define_macros = [('HAVE_CBLAS', None)]
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/lib']
language = c
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 290, in <module>
setup_package()
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 286, in setup_package
setup(**metadata)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/core.py", line 137, in setup
config = configuration()
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 174, in configuration
config.add_subpackage('sklearn')
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1036, in add_subpackage
caller_level = 2)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1005, in get_subpackage
caller_level = caller_level + 1)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 942, in _get_configuration_from_setup_py
config = setup_module.configuration(*args)
File "sklearn/setup.py", line 66, in configuration
config.add_subpackage('utils')
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1036, in add_subpackage
caller_level = 2)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1005, in get_subpackage
caller_level = caller_level + 1)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 942, in _get_configuration_from_setup_py
config = setup_module.configuration(*args)
File "sklearn/utils/setup.py", line 8, in configuration
from Cython import Tempita
ImportError: No module named 'Cython'
----------------------------------------
ERROR: Command "/home/pi/python_virtual_env/neural_networks/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1vothz0i/scikit-learn/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-9myxktkm/install-record.txt --single-version-externally-managed --compile --install-headers /home/pi/python_virtual_env/neural_networks/include/site/python3.5/scikit-learn" failed with error code 1 in /tmp/pip-install-1vothz0i/scikit-learn/
实际结果 - 请参阅上面的错误消息。
预期结果 - 通过 pip 成功将 scikit-learn 安装到 virtualenv 中,因此可以在 python3 脚本中导入。
谢谢!
phd 的回答可以说让我走上了正确的轨道。 piwheels 已经安装好了,但是我发现我尝试安装 scikit-learn 的方式是错误的。 Cython-package 也不见了。所以这是解决方法:
- 激活虚拟环境
- 通过以下方式安装 Cython:python3 -m pip install Cython
- 通过以下方式安装 scikit-learn:python3 -m pip install scikit-learn
现在我可以在虚拟环境中导入 sklearn。
谢谢
我在我的 Raspberry Pi 上创建了一个 virtualenv python3.5 3. 在激活的 virtualenv 中安装 scikit-learn 会引发错误。
我想在这个 virtualenv 中正确安装 scikit-learn 并且能够导入 sklearn。
我尝试通过以下方式安装: pip 安装 scikit-learn, sudo pip3 安装 scikit-learn,
此外,我尝试将 openblas 安装到 virtualenv,因为它似乎是必需的(我解释了错误代码)但没有快乐。
请注意,可以在 "base" python3 中的任何 virtualenv 之外安装 scikit-learn。在那里我可以成功安装和导入它。
pip install scikit-learn
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting scikit-learn
Using cached https://files.pythonhosted.org/packages/57/5c/133b464c8d0be7ac8c9414b6ff2ae848808a35ce03b146fc2c43777e51f9/scikit-learn-0.21.2.tar.gz
Requirement already satisfied: numpy>=1.11.0 in /home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages (from scikit-learn) (1.16.4)
Requirement already satisfied: scipy>=0.17.0 in /home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages (from scikit-learn) (1.3.0)
Requirement already satisfied: joblib>=0.11 in /home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages (from scikit-learn) (0.13.2)
Building wheels for collected packages: scikit-learn
Building wheel for scikit-learn (setup.py) ... error
ERROR: Complete output from command /home/pi/python_virtual_env/neural_networks/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1vothz0i/scikit-learn/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-tu89p36i --python-tag cp35:
ERROR: Partial import of sklearn during the build process.
blas_opt_info:
blas_mkl_info:
customize UnixCCompiler
libraries mkl_rt not found in ['/home/pi/python_virtual_env/neural_networks/lib', '/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
NOT AVAILABLE
blis_info:
customize UnixCCompiler
libraries blis not found in ['/home/pi/python_virtual_env/neural_networks/lib', '/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
NOT AVAILABLE
openblas_info:
customize UnixCCompiler
customize UnixCCompiler
customize UnixCCompiler
FOUND:
library_dirs = ['/usr/lib']
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
FOUND:
library_dirs = ['/usr/lib']
libraries = ['openblas', 'openblas']
define_macros = [('HAVE_CBLAS', None)]
language = c
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 290, in <module>
setup_package()
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 286, in setup_package
setup(**metadata)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/core.py", line 137, in setup
config = configuration()
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 174, in configuration
config.add_subpackage('sklearn')
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1036, in add_subpackage
caller_level = 2)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1005, in get_subpackage
caller_level = caller_level + 1)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 942, in _get_configuration_from_setup_py
config = setup_module.configuration(*args)
File "sklearn/setup.py", line 66, in configuration
config.add_subpackage('utils')
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1036, in add_subpackage
caller_level = 2)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1005, in get_subpackage
caller_level = caller_level + 1)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 942, in _get_configuration_from_setup_py
config = setup_module.configuration(*args)
File "sklearn/utils/setup.py", line 8, in configuration
from Cython import Tempita
ImportError: No module named 'Cython'
----------------------------------------
ERROR: Failed building wheel for scikit-learn
Running setup.py clean for scikit-learn
Failed to build scikit-learn
Installing collected packages: scikit-learn
Running setup.py install for scikit-learn ... error
ERROR: Complete output from command /home/pi/python_virtual_env/neural_networks/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1vothz0i/scikit-learn/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-9myxktkm/install-record.txt --single-version-externally-managed --compile --install-headers /home/pi/python_virtual_env/neural_networks/include/site/python3.5/scikit-learn:
ERROR: Partial import of sklearn during the build process.
blas_opt_info:
blas_mkl_info:
customize UnixCCompiler
libraries mkl_rt not found in ['/home/pi/python_virtual_env/neural_networks/lib', '/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
NOT AVAILABLE
blis_info:
customize UnixCCompiler
libraries blis not found in ['/home/pi/python_virtual_env/neural_networks/lib', '/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
NOT AVAILABLE
openblas_info:
customize UnixCCompiler
customize UnixCCompiler
customize UnixCCompiler
FOUND:
define_macros = [('HAVE_CBLAS', None)]
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/lib']
language = c
FOUND:
define_macros = [('HAVE_CBLAS', None)]
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/lib']
language = c
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 290, in <module>
setup_package()
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 286, in setup_package
setup(**metadata)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/core.py", line 137, in setup
config = configuration()
File "/tmp/pip-install-1vothz0i/scikit-learn/setup.py", line 174, in configuration
config.add_subpackage('sklearn')
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1036, in add_subpackage
caller_level = 2)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1005, in get_subpackage
caller_level = caller_level + 1)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 942, in _get_configuration_from_setup_py
config = setup_module.configuration(*args)
File "sklearn/setup.py", line 66, in configuration
config.add_subpackage('utils')
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1036, in add_subpackage
caller_level = 2)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 1005, in get_subpackage
caller_level = caller_level + 1)
File "/home/pi/python_virtual_env/neural_networks/lib/python3.5/site-packages/numpy/distutils/misc_util.py", line 942, in _get_configuration_from_setup_py
config = setup_module.configuration(*args)
File "sklearn/utils/setup.py", line 8, in configuration
from Cython import Tempita
ImportError: No module named 'Cython'
----------------------------------------
ERROR: Command "/home/pi/python_virtual_env/neural_networks/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1vothz0i/scikit-learn/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-9myxktkm/install-record.txt --single-version-externally-managed --compile --install-headers /home/pi/python_virtual_env/neural_networks/include/site/python3.5/scikit-learn" failed with error code 1 in /tmp/pip-install-1vothz0i/scikit-learn/
实际结果 - 请参阅上面的错误消息。 预期结果 - 通过 pip 成功将 scikit-learn 安装到 virtualenv 中,因此可以在 python3 脚本中导入。
谢谢!
phd 的回答可以说让我走上了正确的轨道。 piwheels 已经安装好了,但是我发现我尝试安装 scikit-learn 的方式是错误的。 Cython-package 也不见了。所以这是解决方法:
- 激活虚拟环境
- 通过以下方式安装 Cython:python3 -m pip install Cython
- 通过以下方式安装 scikit-learn:python3 -m pip install scikit-learn
现在我可以在虚拟环境中导入 sklearn。
谢谢