나는 수년 동안 이것을 알아 내려고 노력해 왔습니다.
특정 Python 프로그램을 실행하면 실제로 설치되어 가져올 수 있어야 하는 일부 모듈을 가져올 수 없다는 메시지가 충돌합니다. 예를 들어:
pip3
충돌할 것이다ImportError: cannot import name 'HTTPSHandler
python2 speedtest-cli
그리고ImportError: No module named expat; use SimpleXMLTreeBuilder instead
python3 speedtest-cli
그리고ImportError: cannot import name 'HTTPSConnection'
virtualenv -p python3 myenv
그리고OSError: Command /home/myuser/myenv/bin/python3 -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip failed with error code 1
이상한 점은 이 프로그램을 새로운 일반 사용자로 실행하거나 sudo
심지어 새로운 일반 사용자로 실행하면 제대로 실행된다는 것입니다. 이는 해당 특정 사용자에게만 발생합니다.
나는 업무 사용자 와 함께 홈 디렉토리에서 모든 Python 실행 파일을 .cache
지우고 실행 .pip
하려고 시도했지만 아무 도움이 되지 않았습니다. 파이썬 목록 에도 마찬가지입니다 ..python-eggs
chmod a+rx -R /usr/
which
sys.path
머신은 Ubuntu Server 14.04 x64입니다.
고쳐 쓰다:
문제를 고친 것 같은데...어떻게 해야 할지 모르겠습니다. 이 질문에 나열된 모든 작업을 수행하고 컴퓨터를 재부팅했습니다.
또 다른 업데이트:
나는 그 원인을 알고 있습니다. 나는 export LD_LIBRARY_PATH="/usr/lib/plexmediaserver"
내 안에 있습니다 .bashrc
. 왜 이런 일이 일어나는지 설명해 줄 수 있나요?
내가 이렇게 하면 아무 일도 일어나지 않을 것이다 echo $LD_LIBRARY_PATH
. 하지만 실행하면 export LD_LIBRARY_PATH="/usr/lib/plexmediaserver"
일부 Python 가져오기가 중단됩니다.
답변1
해결되었습니다.
나는 export LD_LIBRARY_PATH="/usr/lib/plexmediaserver"
내 안에 있습니다 .bashrc
.
/usr/lib/plexmediaserver
libssl.so.1.0.0
및 를 포함한 많은 동적 라이브러리가 있으므로 libexpat.so.1
from 대신 로드되어 /usr/lib
문제가 발생합니다. 이 문제는 실제로 Python과 관련이 없으며 이러한 라이브러리에 의존하는 다른 프로그램에도 똑같이 문제를 일으킬 것입니다.
@slm은 strace
. 내 경우에는 strace speedtest 2>&1 | grep expat | less
잘못된 라이브러리를 로드했다는 증거를 발견했습니다 open("/usr/lib/plexmediaserver/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 7
.
인터넷에 비슷한 질문을 올리는 사람들을 많이 봤지만 전혀 해결책이 없었습니다. 이것이 누군가에게 도움이 되기를 바랍니다.