Python 패키지 빌드가 성공했지만 패키지가 잘못 빌드되었습니다.

Python 패키지 빌드가 성공했지만 패키지가 잘못 빌드되었습니다.

실행하면 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

물론 no를 사용했기 /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-learnPython 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 libs에 대한 설치 지침에서는 종종 수동으로 설치하라고 지시합니다. 배포판용으로 라이브러리가 이미 패키지되어 있다면 이는 실수입니다. 배포판 패키지는 웹 사이트의 일부 설치 지침을 따르는 것보다 시스템에 훨씬 더 잘 통합됩니다.

Python 라이브러리를 설치하려고 할 때 가장 먼저 해야 할 일은 apt-cache search또는 같은 도구를 사용하여 aptitude search해당 라이브러리가 이미 패키지되어 있는지 확인하는 것입니다. 그렇다면 패키지를 설치하십시오. 그렇지 않은 경우 lib 개발자 자신의 독특한 환경에서만 작동하는 지침을 따르는 것보다 로컬 패키지를 빌드하는 데 도움이 되는 도구를 deb-dry사용 하는 것이 더 나을 것입니다.debhelper

답변3

문제를 해결하려면 설치를 계속해야 합니다. 즉, 이번에는 빌드를 다시 실행해야 합니다 sudo. sudo 없이 설치할 수 없는 이유는 대부분의 경우 소프트웨어 설치 프로세스가 어떻게 진행되기 때문입니다.

  1. 구성 단계 - 프로그램 구축을 위한 파일을 준비합니다. 루트 권한이 필요하지 않습니다.
  2. 빌드 단계 - 프로그램을 컴파일하여 일부 실행 파일 및/또는 라이브러리를 생성합니다. 여기에는 루트 권한이 필요하지 않습니다.
  3. 설치 - 다른 프로그램에서 사용할 수 있도록 라이브러리 및/또는 실행 파일을 OS의 대상으로 이동합니다.

빌드는 /usr/local/lib/python3.4/dist-packages/sklearn다른 프로그램(예: Python 인터프리터)에서 사용할 수 있도록 생성하므로 오류가 발생합니다.

관련 정보