특정 사용자에게만 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심지어 새로운 일반 사용자로 실행하면 제대로 실행된다는 것입니다. 이는 해당 특정 사용자에게만 발생합니다.

나는 업무 사용자 와 함께 홈 디렉토리에서 모든 Python 실행 파일을 .cache지우고 실행 .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.1from 대신 로드되어 /usr/lib문제가 발생합니다. 이 문제는 실제로 Python과 관련이 없으며 이러한 라이브러리에 의존하는 다른 프로그램에도 똑같이 문제를 일으킬 것입니다.

@slm은 strace. 내 경우에는 strace speedtest 2>&1 | grep expat | less잘못된 라이브러리를 로드했다는 증거를 발견했습니다 open("/usr/lib/plexmediaserver/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 7.

인터넷에 비슷한 질문을 올리는 사람들을 많이 봤지만 전혀 해결책이 없었습니다. 이것이 누군가에게 도움이 되기를 바랍니다.

관련 정보