문제

내 시스템의 디렉토리에 어떤 디렉토리가 나열되어 있는지 어떻게 알 수 있습니까? PYTHONPATH 변수를 Python 스크립트(또는 대화형 셸) 내에서?

도움이 되었습니까?

해결책

sys.path 구체적으로 귀하의 항목이 포함될 수 있습니다 PYTHONPATH 환경 변수. 변수를 직접 쿼리하려면 다음을 사용하십시오.

import os
try:
    user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
    user_paths = []

다른 팁

당신은 아마 이것도 원할 것입니다 :

import sys
print(sys.path)

또는 터미널에서 하나의 라이너로서 :

python -c "import sys; print('\n'.join(sys.path))"

다른 답변을 편집 할 수없는 것 같습니다. Windows 전용이라는 점에서 약간의 오류가 있습니다. 보다 일반적인 솔루션은 다음과 같이 OS.SEP를 사용하는 것입니다.

Sys.Path에는 PythonPath 환경 변수에 특별히없는 항목이 포함될 수 있습니다. 변수를 직접 쿼리하려면 다음을 사용하십시오.

import os
os.environ['PYTHONPATH'].split(os.pathsep)

PYTHONPATH는 값이 디렉터리 목록인 환경 변수입니다.일단 설정되면 Python에서 다른 표준과 함께 가져온 모듈을 검색하는 데 사용됩니다.Python의 "sys.path"에 나열된 타사 라이브러리 디렉터리.

다른 환경 변수와 마찬가지로 셸이나 ~/.bashrc로 내보낼 수 있습니다. 여기.아래와 같이 Python에서 해당 값에 대해 os.environ['PYTHONPATH']를 쿼리할 수 있습니다.

$ python3 -c "import os, sys; print(os.environ['PYTHONPATH']); print(sys.path) if 'PYTHONPATH' in sorted(os.environ) else print('PYTHONPATH is not defined')"

IF는 쉘에서 다음과 같이 정의됩니다.

$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite

그런 다음 결과 =>

/home/Documents/DjangoTutorial/mysite
['', '/home/Documents/DjangoTutorial/mysite', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']

ELSE 결과 =>

PYTHONPATH is not defined

PYTHONPATH를 여러 경로로 설정하려면 다음을 참조하세요. 여기.

런타임 시 sys.path.insert(), del 또는 Remove()를 통해 검색 경로를 추가하거나 삭제할 수 있지만 os.environ[]을 통해서는 그렇지 않습니다.예:

>>> os.environ['PYTHONPATH']="$HOME/Documents/DjangoTutorial/mysite"
>>> 'PYTHONPATH' in sorted(os.environ)
True
>>> sys.path // but Not there
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']

>>> sys.path.insert(0,os.environ['PYTHONPATH'])
>>> sys.path // It's there
['$HOME/Documents/DjangoTutorial/mysite', '', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>> 

요약하자면, PYTHONPATH는 sys.path에 가져온 모듈에 대한 Python 검색 경로를 지정하는 한 가지 방법입니다.PYTHONPATH의 도움 없이 sys.path에 직접 목록 작업을 적용할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top