나는 오랫동안 이것을 알아 내려고 노력해 왔습니다.
특정 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
또는 새로운 일반 사용자로서 해당 프로그램을 실행하면 제대로 작동한다는 것입니다. 해당 특정 사용자에게만 발생합니다.
나는 지우기를 시도 하고 .cache
홈 디렉토리에서 모든 Python 실행 파일을 작업 사용자와 비교하려고 시도했지만 아무것도 도움이되지 않았습니다. 파이썬 목록도 동일합니다..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
. 그래서 그들은 의 것 대신 로드되어 /usr/lib
문제를 일으키고 있었습니다. 이 문제는 실제로 Python과 관련이 없으며 해당 libs를 중계하는 다른 프로그램에도 똑같이 문제를 일으킬 수 있습니다.
@slm은 strace
. 내 경우에는 strace speedtest 2>&1 | grep expat | less
잘못된 라이브러리가 로드되었다는 증거를 발견했습니다 open("/usr/lib/plexmediaserver/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 7
.
나는 인터넷에서 해결책이 전혀 없는 비슷한 질문을 게시하는 많은 사람들을 보았습니다. 따라서 이것이 누군가에게 도움이 되기를 바랍니다.