복붙노트

[PYTHON] Python 실행 파일 libpython 공유 라이브러리를 찾을 수 없습니다.

PYTHON

Python 실행 파일 libpython 공유 라이브러리를 찾을 수 없습니다.

CentOS 5에 Python 2.7을 설치하려고합니다. 다음과 같이 Python을 빌드하고 설치했습니다.

./configure --enable-shared --prefix=/usr/local
make
make install

/ usr / local / bin / python을 실행하려고하면이 오류 메시지가 나타납니다.

/usr/local/bin/python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

/ usr / local / bin / python에서 ldd를 실행하면

ldd /usr/local/bin/python
    libpython2.7.so.1.0 => not found
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00000030e9a00000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00000030e9200000)
    libutil.so.1 => /lib64/libutil.so.1 (0x00000030fa200000)
    libm.so.6 => /lib64/libm.so.6 (0x00000030e9600000)
    libc.so.6 => /lib64/libc.so.6 (0x00000030e8e00000)
    /lib64/ld-linux-x86-64.so.2 (0x00000030e8a00000)

파이썬에게 libpython을 어디에서 찾을 수 있는지 어떻게 알 수 있습니까?

해결법

  1. ==============================

    1.다음을 시도하십시오.

    다음을 시도하십시오.

    LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/python
    

    / usr / local / lib가 / usr / local / lib에 없으면 libpython2.7.so.1.0을 설치 한 폴더로 바꾸십시오.

    이 방법이 효과가 있고 변경 사항을 영구히 적용하려면 다음 두 가지 옵션이 있습니다.

  2. ==============================

    2.내 gravedigger 모자를 쓰고 ...

    내 gravedigger 모자를 쓰고 ...

    이 문제를 해결하는 가장 좋은 방법은 컴파일 할 때입니다. 하나의 접두사 접두사가 있기 때문에 어쨌든 실행 파일에 명시 적으로 공유 라이브러리의 위치를 ​​명시 할 수 있습니다. OpenSSL과 다른 소프트웨어 패키지와는 달리 Python은 대체 라이브러리 경로를 처리 할 수있는 좋은 configure 지시어를 제공하지 않습니다 (모든 사람이 알고있는 루트가 아닙니다 ...). 가장 간단한 경우 필요한 것은 다음과 같습니다 :

    ./configure --enable-shared \
                --prefix=/usr/local \
                LDFLAGS="-Wl,--rpath=/usr/local/lib"
    

    또는 비 Linux 버전을 선호하는 경우

    ./configure --enable-shared \
                --prefix=/usr/local \
                LDFLAGS="-R/usr/local/lib"
    

    "rpath"플래그는 파이썬에게 특정 경로에 필요한 런타임 라이브러리를 가지고 있다고 알려줍니다. 이 아이디어를 바탕으로 표준 시스템 위치가 아닌 다른 위치에 설치된 종속성을 처리 할 수 ​​있습니다. 예를 들어, 루트 액세스 권한이 없기 때문에 필자의 시스템에서는 거의 완전히 독립적 인 Python 설치가 필요하다. configure 라인은 다음과 같다.

    ./configure --enable-shared \
                --with-system-ffi \
                --with-system-expat \
                --enable-unicode=ucs4 \
                --prefix=/apps/python-${PYTHON_VERSION} \
                LDFLAGS="-L/apps/python-${PYTHON_VERSION}/extlib/lib -Wl,--rpath=/apps/python-${PYTHON_VERSION}/lib -Wl,--rpath=/apps/python-${PYTHON_VERSION}/extlib/lib" \
                CPPFLAGS="-I/apps/python-${PYTHON_VERSION}/extlib/include"
    

    이 경우 파이썬이 파이썬 디렉토리 트리 자체 내에서 extlib 디렉토리로 사용하는 라이브러리 (ffi, readline 등)를 컴파일합니다. 이 방법으로 파이썬 - $ {PYTHON_VERSION} 디렉토리를 타르 (tar) 할 수 있으며, 어느 곳으로나 착륙 할 수 있으며, libc 나 libm 충돌을 일으키지 않는다면 "작동"할 것이다. 이것은 LD_LIBRARY_PATH를 계속 변경하거나 잘못된 버전의 Python 라이브러리를 선택하는 것에 대해 걱정할 필요가 없기 때문에 같은 상자에서 여러 버전의 Python을 실행하려고 할 때도 도움이됩니다.

    편집 : 당신이 접두어로 사용하는 무엇을 PYTHONPATH 환경 변수를 설정하지 않으면 컴파일을 언급 깜빡하고 위의 예제를 확장 예 : PYTHONPATH를 사용되는 접두사로 설정 예 : 모듈을 컴파일하지 못했습니다 위의 예는 export PYTHONPATH = / apps / python - $ {PYTHON_VERSION} ...와 같습니다.

  3. ==============================

    3.나는 똑같은 문제를 겪었고 이렇게 해결했다.

    나는 똑같은 문제를 겪었고 이렇게 해결했다.

    libpython이 어디에 있는지 알고 있다면, 나는 /usr/local/lib/libpython2.7.so.1.0이 될 것이라고 생각한다. 단지 심볼릭 링크를 만들면된다 :

    sudo ln -s /usr/local/lib/libpython2.7.so.1.0 /usr/lib/libpython2.7.so.1.0
    

    그런 다음 ldd를 다시 실행하여 작동하는지 확인하십시오.

  4. ==============================

    4.CentOS 7의 소프트웨어 모음에서 Python 3.5를 설치했습니다. 모두 잘 작동했지만 간단한 CGI 스크립트를 실행하려고했을 때 공유 라이브러리 오류가이 질문에서 언급 된 것을 보았습니다.

    CentOS 7의 소프트웨어 모음에서 Python 3.5를 설치했습니다. 모두 잘 작동했지만 간단한 CGI 스크립트를 실행하려고했을 때 공유 라이브러리 오류가이 질문에서 언급 된 것을 보았습니다.

    tail /var/log/httpd/error_log
    AH01215: /opt/rh/rh-python35/root/usr/bin/python: error while loading shared libraries: libpython3.5m.so.rh-python35-1.0: cannot open shared object file: No such file or directory
    

    모든 사용자에게 적용되는 시스템 전체 솔루션을 원했기 때문에 .profile 또는 .bashrc 파일에 내보내기 명령문을 추가하지 않았습니다. Red Hat 솔루션 페이지를 기반으로 한 줄짜리 솔루션이 있습니다. 그것을 지적 해 주셔서 감사합니다 :

    echo 'source scl_source enable rh-python35' | sudo tee --append /etc/profile.d/python35.sh
    

    다시 시작한 후에는 쉘에서 모두 정상적으로 작동하지만 때로는 웹 서버가 여전히 불평 할 수 있습니다. 셸과 서버 모두에서 항상 작동하는 또 다른 접근법이 있으며 더 일반적입니다. 나는 여기서 해결책을 보았고 실제로 여기에있는 대답들 중 하나에서 실제로 언급되었다는 것을 깨달았다. 어쨌든 CentOS 7에서는 다음과 같은 단계가 있습니다.

     vim /etc/ld.so.conf
    

    내 컴퓨터에서 다음 중 어느 것을 사용 했습니까?

    include ld.so.conf.d/*.conf
    

    그래서 나는 새 파일을 만들었습니다.

    vim /etc/ld.so.conf.d/rh-python35.conf
    

    그리고 덧붙였다 :

    /opt/rh/rh-python35/root/usr/lib64/
    

    그리고 캐시를 수동으로 다시 빌드하려면 다음을 수행하십시오.

    sudo ldconfig
    

    스크립트가 정상적으로 작동합니다.

    이것은 일시적인 해결책 이었지만 재부팅시에는 작동하지 않았습니다.

    sudo ldconfig /opt/rh/rh-python35/root/usr/lib64/ -v
    

    -v (verbose) 옵션은 무슨 일이 진행되고 있는지보기위한 것입니다. 나는 그것이 한 것을 보았다 :     / opt / rh / rh-python35 / root / usr / lib64 :         libpython3.so.rh-python35 -> libpython3.so.rh-python35         libpython3.5m.so.rh-python35-1.0 -> libpython3.5m.so.rh-python35-1.0

    이 특별한 오류는 사라졌습니다. 덧붙여 말하자면, 나는 그 후에 권한 오류를 없애기 위해 아파치 사용자에게 권한을 부여해야했다.

    find를 사용하여 라이브러리의 디렉토리를 찾습니다. 다음과 같이 할 수도 있습니다.

    sudo yum install mlocate
    sudo updatedb
    locate libpython3.5m.so.rh-python35-1.0
    

    내 VM에서 다음을 반환합니다.

    /opt/rh/rh-python35/root/usr/lib64/libpython3.5m.so.rh-python35-1.0
    

    위에 표시된 것처럼 ldconfig에 줄 필요가있는 경로입니다.

  5. ==============================

    5.Solaris 11에서

    Solaris 11에서

    파이썬 libs에 대한 심볼릭 링크를 해결하려면 LD_LIBRARY_PATH_64를 사용하십시오.

    제 경우에는 python3.6 LD_LIBRARY_PATH가 작동하지 않았지만 LD_LIBRARY_PATH_64가 성공했습니다.

    희망이 도움이됩니다. 문안 인사

  6. ==============================

    6.그냥 python-lib를 설치하십시오. (python27-lib). libpython2.7.so1.0을 설치합니다. 우리는 수동으로 아무것도 설정할 필요가 없습니다.

    그냥 python-lib를 설치하십시오. (python27-lib). libpython2.7.so1.0을 설치합니다. 우리는 수동으로 아무것도 설정할 필요가 없습니다.

  7. ==============================

    7.명령을 사용하여 설치했습니다.

    명령을 사용하여 설치했습니다.

    ./configure --prefix=/usr       \
                --enable-shared     \
                --with-system-expat \
                --with-system-ffi   \
                --enable-unicode=ucs4 &&
    
    make
    

    자, 루트 사용자로서 :

    make install &&
    chmod -v 755 /usr/lib/libpython2.7.so.1.0
    

    그런 다음 파이썬을 실행하려고 시도하고 오류가 발생했습니다.

    그런 다음 루트 사용자로부터 로그 아웃하고 Python을 다시 실행하려고 시도했지만 성공적으로 작동했습니다.

  8. ==============================

    8.이것은 나를 위해 일했다 ...

    이것은 나를 위해 일했다 ...

    $ sudo apt-get install python2.7-dev
    
  9. ==============================

    9.필요한 것은 libpython [3 또는 2] dev 파일 설치를 설치하는 것입니다.

    필요한 것은 libpython [3 또는 2] dev 파일 설치를 설치하는 것입니다.

  10. from https://stackoverflow.com/questions/7880454/python-executable-not-finding-libpython-shared-library by cc-by-sa and MIT license