복붙노트

[PYTHON] import 문 앞에 pythonpath를 설정하십시오.

PYTHON

import 문 앞에 pythonpath를 설정하십시오.

내 코드는 다음과 같습니다.

import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

그러나 scriptlib은 다른 디렉토리에 있으므로,이 디렉토리를 환경 변수 "PYTHONPATH"에 포함시켜야합니다.

어쨌든 import 문이 실행되기 전에 환경 변수 "PYTHONPATH"에 scriptlib 디렉토리를 먼저 추가 할 수 있습니까?

import sys
sys.path.append('/mypath/scriptlib')
import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

그렇다면 해당 명령 프롬프트의 값만 아니면 전역입니까?

미리 감사드립니다.

해결법

  1. ==============================

    1.이렇게하면 파이썬 프로세스 / 인스턴스 (즉, 실행중인 실행 파일)에 대한 경로가 추가됩니다. 경로는 다른 파이썬 프로세스에서 수정되지 않습니다. 실행중인 다른 파이썬 프로그램은 경로가 수정되지 않으며 프로그램을 종료하고 다시 실행하면 이전에 추가 한 경로가 경로에 포함되지 않습니다. 당신이하는 일은 대체로 정확합니다.

    이렇게하면 파이썬 프로세스 / 인스턴스 (즉, 실행중인 실행 파일)에 대한 경로가 추가됩니다. 경로는 다른 파이썬 프로세스에서 수정되지 않습니다. 실행중인 다른 파이썬 프로그램은 경로가 수정되지 않으며 프로그램을 종료하고 다시 실행하면 이전에 추가 한 경로가 경로에 포함되지 않습니다. 당신이하는 일은 대체로 정확합니다.

    set.py:

    import sys
    sys.path.append("/tmp/TEST")
    

    loop.py

    import sys
    import time
    while True:
      print sys.path
      time.sleep(1)
    

    실행 : python loop.py &

    이렇게하면 loop.py가 실행되어 STDOUT에 연결되며 백그라운드에서 계속 실행됩니다. 그런 다음 python set.py를 실행할 수 있습니다. 각각은 서로 다른 환경 변수 집합을 가지고 있습니다. set.py는 loop.py의 환경을 변경하지 않기 때문에 loop.py로부터의 출력은 변하지 않는다는 것을 관찰하라.

    가져 오기에 대한 참고 사항

    파이썬의 임포트는 나머지 언어와 마찬가지로 동적입니다. 진행중인 정적 링크가 없습니다. 가져 오기는 sys.path.append와 같이 실행 가능한 행입니다.

  2. ==============================

    2.또한 여기에있는 문서에 언급되어 있습니다. Python X.X / Lib로 가서이 라인을 site.py에 추가하십시오.

    또한 여기에있는 문서에 언급되어 있습니다. Python X.X / Lib로 가서이 라인을 site.py에 추가하십시오.

    import sys
    sys.path.append("yourpathstring")
    

    이렇게하면 sys.path가 변경되어 모든로드에서 해당 값을 갖게됩니다.

    site.py에 관해서 언급했듯이,

    sys.path에 경로를 추가하는 다른 가능한 방법은이 문서를 참조하십시오.

  3. from https://stackoverflow.com/questions/15109548/set-pythonpath-before-import-statements by cc-by-sa and MIT license