2014-09-07 7 views
2

내 상황은 p 번째 파일을로드에서 파이썬을 방지 :다음과 같이

  • 내가 파이썬의 로컬에 설치된 버전을 가지고있다. 심하게 설치되어 사용하고 싶지 않은 글로벌 제품도 있습니다. (나는 관리자 권한이 없다). /usr/local/lib/site-packages
  • 내 PYTHONPATH가 어떤 경로의 연결이없는 NumPy와의 잘못된 설치 경로를 포함하는 x.pth 파일이 있습니다. 그러나 일부 관리자 생성 스크립트는 내 PATH에 /usr/local/usr/local/bin을 추가합니다 (이는 알려진 사실이 아닌 가정입니다).
  • 이렇게하면 잘못된 numpy 경로가 내 sys.path에 추가됩니다. 내가 python -S을 실행할 때, 거기 있지 않습니다.
  • site.PREFIXES/usr/local을 포함하지 않습니다. 나는 왜 앞에서 언급 한 pth 파일이로드되었는지 전혀 모른다.
  • 로컬 설치의 site-packages 디렉토리에 pth 파일을 추가하려고 시도했습니다. import sys; sys.path.remove('pth/to/faulty/numpy') pth 파일이로드 될 때 오류 경로가 아직 sys.path에 없기 때문에이 작업이 실패합니다.

내가 pth 파일의 로딩을 비활성화하거나 파이썬이로드되기 전에 sys.path에서 경로를 제거 할 수있는 방법이 있습니까?

virtualenv 설정을 시도했지만 현재 상황에 맞지 않습니다.

답변

2

마침내이 문제를 해결할 수있었습니다. 사이트 패키지 라이브러리에 easy_install.pth 파일에 오류가있는 numpy가 포함되어 있고 /usr/local/lib/site-packages의 x.pth 파일이 아닌 파일이 있습니다.

  • 로컬로 설치 한 경우 파이썬 그것을 을 : 다른 사람이 지금 여기 얻는 경우에 나는이에 소요되는 시간의 주요 양, 내가 배운 것들 중 일부를 공유 할 후

    은 기본적으로 '/ usr/local/lib'에서 검색하지 않습니다. 당신이 검색 위치를 알고 싶다면, 실행 여기에 + lib/python2.X/site-packages 경로에 대한

    import site 
    print site.PREFIXES 
    

    파이썬 검색. 설명 됨 here

  • 이 문서에 따르면 실제로 sys.path를 사용할 수 있습니다. usercustomize 모듈을 로컬 사이트 패키지 (import site; site.getusersitepackages())에 추가하면 실행됩니다. 그러나 이것은 실현 시간을 필요로했습니다. 파이썬이 사이트 패키지에있는 pth 파일을 처리하고 다시 처리하기 전에 발생합니다. 이 작업을 수행하는 메소드에 print 문을 추가하면 (lib/site.평 addsitedir), 이것은 인쇄 할 것입니다 : 내가 사이트 패키지 놓친 p 번째 파일을 가지고 일단

    /home/user/.local/lib/python2.7/site-packages 
    /home/user/py/lib/python2.7/site-packages 
    #This is where your code runs 
    /home/user/py/lib/python2.7/site-packages/numpy-1.9.0-py2.7-linux-x86_64.egg 
    /home/user/Develop/Python/myproject 
    /home/user/lmfit-0.7.2 
    /home/user/py/lib/python2.7/site-packages #NOTE: this runs a second time 
    
  • , 그 p 번째 파일이 기회를 가지고 있기 때문에 내가하는 usercustomize으로 해결되지 수 나중에 한 번 더 달리기!

-1

pth 파일을 삭제할 수있는 방법이 없습니다. 표준 파이썬은 pth 파일을 /usr/lib/usr/local/lib으로 검색합니다.

viartualenv 통해 고립 된 파이썬을 만들 수 있습니다.

+0

나는 그것을 삭제하고 싶다고 결코 말하지 않았다. 검색 위치와 관련하여 - 이것은 [site] (https://docs.python.org/2/library/site.html)의 문서가 말하는 것과 다릅니다. - 참조가 있습니까? 그리고 만약 pth 파일을 무시할 방법이 없다고한다면 -로드하기 전에 sys.path에서 경로를 제거 할 경로가 있습니까? – Korem

+0

그리고 부정적으로, 그리고 정중하게 "당신은 할 수는 없지만 당신이하고 싶지 않다고 특별히 말한 것을하는 것이 좋습니다"라는 대답은 매우 생산적이지 않습니다. – Korem