Python에서 sys.path에 파일 경로를 영구적으로 추가


97

나는라는 파일이 있었다 example_file.py나는 추가하기로 결정, 그래서 나는 여러 다른 파일에서 사용하는 원 example_file.pysys.path파일을 사용하는 다른 파일이 파일을 가져올. 이를 위해 IPython에서 다음을 실행했습니다.

import sys
sys.path
sys.path.append('/path/to/the/example_file.py')
print(sys.path)

방금 추가 한 경로를 볼 수 있으며 다음과 같은 다른 디렉토리 경로에서이 파일을 가져 오려고 할 때 :

import example_file

잘 작동했지만 IPython에서 나와 다시 입력하고을 확인한 후 sys.path추가 한 경로가 존재하지 않는 것을 확인 했으므로 Python에서 sys.path에 경로를 영구적으로 추가하려면 어떻게해야합니까?


3
코드를 적절한 패키지로 만들고, 쉽게 설치할 수있게 만들고, 남은 평생 동안 행복하게 만드십시오 (수정하는 대신). 그 외에도 모든 문서는 sys.path.append()파일에 대한 단일 경로가 아닌 파일을 포함하는 디렉토리 를 허용 한다는 것을 명확하게 알려줍니다 .
Andreas Jung



시스템 경로를 PYTHONPATH.
Burhan Khalid 2012 년

답변:


95

몇 가지 방법이 있습니다. 가장 간단한 방법 중 하나는 여기에my-paths.pth 설명 된대로 파일 을 만드는 것 입니다. 이것은 시스템 디렉토리에 넣은 확장자 를 가진 파일입니다 . 파일의 각 행에 하나의 디렉토리 이름을 입력하므로 거기에 행을 넣을 수 있으며 해당 디렉토리를 경로에 추가합니다..pthsite-packages/path/to/the/

시스템 PATH 변수와 비슷하지만에 추가 될 디렉토리를 포함하는 PYTHONPATH 환경 변수를 사용할 수도 있습니다 sys.path. 설명서를 참조하십시오 .

무엇을하든 파일이 아닌 디렉토리를sys.path 포함 합니다. "파일을 추가"할 수 없습니다 . 항상 디렉토리를 추가 한 다음 파일을 가져올 수 있습니다.sys.path


1
좋아 감사합니다. 다른 위치에서 파일을 가져올 때 파일과 작업으로 구성된 디렉토리를 추가했습니다. ipython에서 나왔을 때 문제가 발생하고 내 경로를 확인하기 위해 다시 약탈했지만 나타나지 않습니다. 내가 코드를 입력 할 때 나는 permanatly, 어떻게 할 sys.path에 대한 디렉토리 경로를 추가하려면, 그것을마다 할 싶지 않다
시바 크리슈나 Bavandla

@Kouripm : 귀하의 의견은 실제로 내 제안을 따르지 않았고 위에 링크 된 중복 게시물의 제안을 따르지 않았 음을 암시합니다.
BrenBarn

1
site패키지는 완벽했다.
Zeinab Abbasimazar

8
내 문제를 해결은 sys.path.append('C:\\python34\\lib\\site-packages')감사합니다!
tylerlindell

후손을 위해 : .pth파일은 사이트 모듈 문서 에서 path configuration file. 경로 구성 파일에 대한 참고 사항 :no check is made that the item refers to a directory rather than a file. No item is added to sys.path more than once. Blank lines and lines beginning with # are skipped. Lines starting with import (followed by space or tab) are executed.
Minh Tran

1

이 방법은 나를 위해 일했습니다.

원하는 경로 추가 :

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add

확인 : 'export'cmd를 실행하고 출력을 확인하거나 다음 cmd를 사용하여 확인할 수 있습니다.

python -c "import sys; print(sys.path)"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.