특정 사용자에게만 Python 모듈을 가져오지 못했습니다.

특정 사용자에게만 Python 모듈을 가져오지 못했습니다.

나는 오랫동안 이것을 알아 내려고 노력해 왔습니다.

특정 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-eggschmod a+rx -R /usr/whichsys.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/plexmediaserverlibssl.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.

나는 인터넷에서 해결책이 전혀 없는 비슷한 질문을 게시하는 많은 사람들을 보았습니다. 따라서 이것이 누군가에게 도움이 되기를 바랍니다.

관련 정보