실행하면 python3 setup.py build
다음과 같이 종료됩니다.
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.4/sklearn/linear_model/sag_fast.o -Lbuild/temp.linux-x86_64-3.4 -o build/lib.linux-x86_64-3.4/sklearn/linear_model/sag_fast.cpython-34m.so
running install_lib
creating /usr/local/lib/python3.4/dist-packages/sklearn
error: could not create '/usr/local/lib/python3.4/dist-packages/sklearn': Permission denied
/usr/local/lib/
물론 사용 하지 않기 때문에 쓸 수는 없습니다 sudo
. 이 단계에서는 sudo를 사용하는 데 주의해야 합니다.
이 것이 마지막이다 sudo python3 setup.py install
:
running install_egg_info
Writing /usr/local/lib/python3.4/dist-packages/scikit_learn-0.18.dev0.egg-info
running install_clib
나 한테보기 좋다. 그러나 시도하면 import sklearn
다음 오류가 발생합니다.
$ python3
Python 3.4.3+ (default, Oct 14 2015, 16:03:50)
[GCC 5.2.1 20151010] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sklearn
Traceback (most recent call last):
File "/home/dotancohen/code/scikit-learn/sklearn/__check_build/__init__.py", line 44, in <module>
from ._check_build import check_build
ImportError: No module named 'sklearn.__check_build._check_build'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/dotancohen/code/scikit-learn/sklearn/__init__.py", line 56, in <module>
from . import __check_build
File "/home/dotancohen/code/scikit-learn/sklearn/__check_build/__init__.py", line 46, in <module>
raise_build_error(e)
File "/home/dotancohen/code/scikit-learn/sklearn/__check_build/__init__.py", line 41, in raise_build_error
%s""" % (e, local_dir, ''.join(dir_content).strip(), msg))
ImportError: No module named 'sklearn.__check_build._check_build'
___________________________________________________________________________
Contents of /home/dotancohen/code/scikit-learn/sklearn/__check_build:
_check_build.c setup.pyc __pycache__
_check_build.pyx __init__.py setup.py
___________________________________________________________________________
It seems that scikit-learn has not been built correctly.
If you have installed scikit-learn from source, please do not forget
to build the package before using it: run `python setup.py install` or
`make` in the source directory.
If you have used an installer, please check that it is suited for your
Python version, your operating system and your platform.
>>>
python3 setup.py build
으로 달려야 할까요 sudo
?이것은 Kubuntu Linux 15.10에 있습니다.
$ uname -a
Linux loathe 4.2.0-16-generic #19-Ubuntu SMP Thu Oct 8 15:35:06 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/issue
Ubuntu 15.10 \n \l
Ubuntu 패키지 버전은 python-scikits-learn
Python 2에서만 작동하므로 Python 3이 필요합니다.
답변1
내가 찾은이 게시물사용할 ATLAS(선형 대수 패키지) 버전을 구성하는 방법은 다음과 같습니다.
$ sudo update-alternatives --set libblas.so.3 /usr/lib/atlas-base/atlas/libblas.so.3
$ sudo update-alternatives --set liblapack.so.3 /usr/lib/atlas-base/atlas/liblapack.so.3
그 후 실제로 더 이상 권한 문제가 없다는 사실에 놀랐지만, 빌드할 때 다음 오류가 발생했습니다.
sklearn/__check_build/_check_build.c:4:20: fatal error: Python.h: No such file or directory
그래서 결과를 살펴보고 aptitude search python | grep dev
다음 패키지가 도움이 될 것이라고 결정했습니다.
$ sudo aptitude install python3-numpy-dev python3.5-dev libpython3.4-dev
이렇게 하면 패키지가 올바르게 빌드되고 scikit-learn을 올바르게 가져옵니다.
$ python3
Python 3.4.3+ (default, Oct 14 2015, 16:03:50)
[GCC 5.2.1 20151010] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sklearn
>>>
이 세 가지 패키지 중 어느 것이 중요한 패키지인지는 확실하지 않지만 libpython3.4-dev
문제는 해결되었습니다.
답변2
로컬 설치를 정리(제거)하고 를 실행해야 합니다 sudo apt-get install python-scikits-learn
. 이는 데비안용으로 패키지되어 있으므로 Ubuntu 및 그 파생 제품용으로 패키지됩니다.
Python 라이브러리 설치 지침은 일반적으로 수동으로 설치하도록 지시합니다. 배포용으로 라이브러리가 이미 패키지되어 있다면 이는 실수입니다. 웹 사이트의 일부 설치 지침을 따르는 것보다 배포 패키지가 시스템에 더 잘 통합됩니다.
Python 라이브러리를 설치하고 싶을 때 가장 먼저 해야 할 일은 apt-cache search
Python이나 Python과 같은 도구를 사용하여 aptitude search
이미 패키지되어 있는지 확인하는 것입니다. 그렇다면 패키지를 설치하십시오. 그렇지 않다면 lib 개발자 자신의 특수 환경에서만 작동할 수 있는 지침을 따르는 것보다 로컬 패키지를 빌드하는 데 도움이 되는 도구를 deb-dry
사용하는 것이 더 나을 것입니다.debhelper
답변3
문제를 해결하려면 설치를 계속해야 합니다. 즉, sudo
이번에는 빌드를 다시 실행해야 합니다. sudo 없이는 설치할 수 없는 이유는 (대부분의 경우) 소프트웨어 설치 과정이 이와 같기 때문입니다.
- 구성 단계 - 프로그램 빌드를 위한 파일을 준비합니다. 루트 권한이 필요하지 않습니다.
- 빌드 단계 - 프로그램을 컴파일하여 일부 실행 파일 및/또는 라이브러리를 생성합니다. 루트 권한이 필요하지 않습니다.
- 설치 - 다른 프로그램에서 사용할 수 있도록 라이브러리 및/또는 실행 파일을 운영 체제의 대상으로 이동합니다.
빌드는 /usr/local/lib/python3.4/dist-packages/sklearn
다른 프로그램(예: Python 인터프리터)에서 사용할 수 있도록 생성되므로 오류가 발생하는 것입니다.