최근에 Python이 작동하는 데 필요한 일부 소프트웨어를 설치했습니다. 어떤 이유로 자체 Python 버전을 설치하고 PYTHONPATH 변수를 수정했습니다. 이제 numpy와 같은 모듈을 가져오려고 하면 얻을 수 있는 것은
ImportError: No module named numpy
현재 echo $PYTHONPATH
I get 을 실행하면 /home/astrolab/easyaccess/eups/1.2.30/python
강탈된 Python 설치를 가리킵니다. 을 실행하여 동일한 결과를 얻었습니다 sudo echo $PYTHONPATH
. 내가 얻은 sys.path 설정을 확인하는 중
['', '/home/astrolab/easyaccess/eups/1.2.30/python', '/home/astrolab/easyaccess/eups/packages/Linux64/python/2.7.6+2/lib/python27.zip', '/home/astrolab/easyaccess/eups/packages/Linux64/python/2.7.6+2/lib/python2.7', '/home/astrolab/easyaccess/eups/packages/Linux64/python/2.7.6+2/lib/python2.7/plat-linux2', '/home/astrolab/easyaccess/eups/packages/Linux64/python/2.7.6+2/lib/python2.7/lib-tk', '/home/astrolab/easyaccess/eups/packages/Linux64/python/2.7.6+2/lib/python2.7/lib-old', '/home/astrolab/easyaccess/eups/packages/Linux64/python/2.7.6+2/lib/python2.7/lib-dynload', '/home/astrolab/.local/lib/python2.7/site-packages', '/home/astrolab/easyaccess/eups/packages/Linux64/python/2.7.6+2/lib/python2.7/site-packages']
그러나 내가 sudo python -c "import sys; print sys.path"
달리면
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/astrolab/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7']
이것이 올바른 경로이며 평소처럼 numpy/matplotlib/etc를 가져올 수 있습니다.
내 질문은: sys.path/PYTHONPATH 환경 변수를 수정하는 가장 좋은 방법은 무엇입니까? .bashrc 파일을 편집하고 sudo의 sys.path에서 경로를 수동으로 내보내는 것을 고려했지만 이것이 실제로 이 문제를 해결하는 가장 좋은 방법입니까? 또한 $PYTHONPATH를 이런 식으로 편집하면 sys.path 차이가 수정될지 확실하지 않습니다.
편집: 내가 포함하는 것을 잊은 한 가지는 더 이상 새로운 Python 설치의 어떤 부분에도 액세스할 필요가 없다는 것입니다. 이 문제를 해결한 후에는 새 설치 및 관련 소프트웨어를 제거할 계획입니다.
답변1
.rc 파일에 추가된 PYTHONPATH env 설정을 확인하고 주석 처리합니다. 이렇게 하면 PYTHONPATH env 설정이 없어야 합니다. 즉, 시스템 기본값(sudo cmd를 사용하여 확인함)을 의미합니다. 패키지의 PATH 사용자 정의가 올바르게 수행되었을 수도 있습니다. 세션을 다시 시작해야 합니다(또는 해당 환경 변수를 수동으로 조정해야 합니다).
sw 패키지의 사용자 정의를 계속 사용해야 하는 경우 이를 특수 파일/스크립트에 넣으십시오(sw 호출도 래핑할 수도 있음). 이렇게 하면 환경을 사용자 정의하여 sw를 만족시킬 수 있지만 다음과 같은 경우에 수행하십시오. 소프트웨어를 실행해야 할 때.