programing

PYTHONPATH에 정확히 무엇을 설정해야합니까?

nasanasas 2020. 12. 9. 08:18
반응형

PYTHONPATH에 정확히 무엇을 설정해야합니까?


저는 파이썬 프로젝트를 위해 일하는 다른 개발자들을위한 설정 문서를 살펴보고 작성 중이며 PYTHONPATH환경 변수 에 대해 읽어 왔습니다 . 현재 개발 시스템을보고 있는데 파이썬 라이브러리를 찾을 때 IDE (IntelliJ)가 잘못 작동하는 원인이되는 몇 가지 문제가 있다고 생각합니다.

여기여기 에있는 문서를 살펴 봤지만 실제로 PYTHONPATH환경 변수 에 무엇이 있어야하는지 여전히 잘 모르겠습니다 .

나는 PYTHONHOME`C : \ Python27 '을 가리켰다.

내 전류 PYTHONPATH는로 설정되어 PYTHONHOME있습니다. 디렉토리도 추가해야합니까 sys.path?

최신 정보:

아래 정보에 따라 PYTHONPATHpython이 기본적으로 찾을 수 있도록하려는 비표준 라이브러리가 없으면 설정할 필요가 없습니다. 예를 들어 설치 프로그램에서 wxPython설치할 때 라이브러리를 PYTHONPATH. PYTHONHOME파이썬 설치의 루트로 설정 하여 시스템 PATH환경 변수에 추가하여 어디서나 파이썬을 실행할 수 있습니다.


둘 중 하나를 설정할 필요가 없습니다. PYTHONPATH는 개인 라이브러리가있는 추가 디렉토리를 가리 키도록 설정할 수 있습니다. PYTHONHOME이 설정되지 않은 경우 Python은 기본적으로 python.exe가있는 디렉토리를 사용하므로 dir은 PATH에 있어야합니다.


대부분의 설치에서 이러한 변수는 Python 실행에 필요하지 않으므로 설정하지 않아야합니다. Python은 표준 라이브러리를 찾을 수있는 위치를 알고 있습니다.

PYTHONPATH를 설정하는 유일한 이유는 전역 기본 위치 (즉, site-packages디렉터리) 에 설치하지 않으려는 사용자 지정 Python 라이브러리의 디렉터리를 유지하기 위해서 입니다.

반드시 읽어보십시오 : http://docs.python.org/using/cmdline.html#environment-variables


내가 배운 내용은 다음과 같습니다. PYTHONPATH는 현재 디렉터리로 구성된 Python 가져 오기 검색 경로 "sys.path"에 추가 할 디렉터리입니다. CWD, PYTHONPATH, 표준 및 공유 라이브러리, 고객 라이브러리. 예를 들면 :

% python3 -c "import sys;print(sys.path)"
['', 
'/home/username/Documents/DjangoTutorial/mySite', 
'/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', 
'/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']

여기서 첫 번째 경로 ''는 현재 디렉토리를 나타냅니다., 두 번째 경로는

%export PYTHONPATH=/home/username/Documents/DjangoTutorial/mySite 

~ / .bashrc에 추가하여 영구적으로 만들 수 있으며 나머지는 Python 표준 및 동적 공유 라이브러리 와 django와 같은 타사 라이브러리입니다.

PYTHONHOME을 엉망으로 만들지 말라고 말했듯이 ''또는 'None'으로 설정해도 python3 셸이 작동을 멈 춥니 다.

% export PYTHONHOME=''
% python3
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007f18a44ff740 (most recent call first):
Aborted (core dumped)

Python 스크립트를 시작하면 CWD가 스크립트의 디렉터리가됩니다. 예를 들면 :

username@bud:~/Documents/DjangoTutorial% python3 mySite/manage.py runserver
==== Printing sys.path ====
/home/username/Documents/DjangoTutorial/mySite # CWD is where manage.py resides
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages

런타임에 sys.path에 경로를 추가 할 수도 있습니다. ~ / Documents / Python 디렉토리에 Fibonacci.py 파일이 있다고 가정합니다.

username@bud:~/Documents/DjangoTutorial% python3 
>>> sys.path.append("/home/username/Documents")
>>> print(sys.path)
['', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', 
'/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', 
'/home/username/Documents']
>>> from Python import Fibonacci as fibo

또는 통해

% PYTHONPATH=/home/username/Documents:$PYTHONPATH
% python3
>>> print(sys.path)
['', 
'/home/username/Documents', '/home/username/Documents/DjangoTutorial/mySite', 
'/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', 
'/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']
>>> from Python import Fibonacci as fibo

참고 URL : https://stackoverflow.com/questions/7850908/what-exactly-should-be-set-in-pythonpath

반응형