virtualenv에서 PYTHONPATH에 경로를 추가하는 방법


97

특정 virtualenv 환경에서만 볼 수있는 PYTHONPATH 환경 변수에 경로를 추가하려고합니다.

SET PYTHONPATH=...virtualenv 명령 프롬프트에서 시도했지만 전체 환경에 대한 변수를 설정합니다.

어떻게해야합니까?

답변:


155

일반적으로 files사용.pth 하면 PYTHONPATH로 아무것도하지 않아도됩니다 . .pth 확장자 (모든 기본 이름이 작동 함)를 가진 파일을 virtualenv의 site-packages 폴더에 넣으십시오. 예를 들어 lib\python2.7\site-packages패키지를 유일한 내용으로 포함하는 디렉토리에 대한 절대 경로를 사용하십시오.


불행히도 이것은 재정의로 작동하지 않습니다. 경로를 추가하므로 개발중인 경우 작동하지 않습니다.
Erik Aronesty 2018-08-29

또한 절대 경로를 안다면 변수의 요점은 무엇입니까?
Jamie Marshall

가상 환경의 사이트 패키지 폴더로 이동하여 ln -s path / to / somfile.pth와 같이 .pth 파일에 대한 심볼릭 링크를 만들 수도 있습니다. 나는 여러 가상 환경에서 액세스 할 수 있도록 같은 디렉토리를 필요로 할 때 나는이 유용 발견
데이터 - phile

91

를 사용 하는 경우 virtualenvwrappervirtualenv 도 사용해야합니다.이 경우 add2virtualenv 명령을 사용 하여 현재 virtualenv의 Python 경로에 경로를 추가 할 수 있습니다 .

add2virtualenv directory1 directory2 …


3
virtualenv에서 제거하는 것은 어떻습니까?
silverdagger

1
공유 호스트 및 유사한 상황에서 venv 래퍼가 바람직하지 않다는 친근한 의견을 추가하고 싶습니다. 이러한 경우 하나의 venv가 유효하며 추가 설치에 필요한 모든 것이 바람직하지 않습니다. 지역적으로는 다르지만 서버 / 이미지에서 KISS는 정말 중요합니다.
Marc

2
이것이 작성되었을 때 명령이 어떻게 작동했는지 확실 add2virtualenv하지 않지만 $ PYTHONPATH를 수정하지 않고 sys.path를 수정합니다.
ForeverWintr

1
@ajostergaard : 죄송합니다. 소스를 제공해야했습니다. 의 소스 코드를 보면 add2virtualenvsys.path가 수정되고 있음을 알 수 있습니다. 나는 문서가 PYTHONPATH환경 변수를 수정하는 것처럼 들리지만 잘못된 것처럼 보인다 는 데 동의합니다 . bitbucket.org/virtualenvwrapper/virtualenvwrapper/src/...
ForeverWintr

1
@ForeverWintr 내가 정정했습니다-.pth 파일은 sys.path를 설정하는 데 사용됩니다. docs.python.org/2/library/site.html Confused.com!
ostergaard

5

virtualenv 중 하나에 심볼릭 링크를 넣을 수도 있습니다.

예. 1) virtualenv 활성화 2) python 실행 3) import sys 및 sys.path 확인 4) 거기에서 python 검색 경로를 찾을 수 있습니다. 그 중 하나를 선택하십시오 (예 : 사이트 패키지) 5) 거기로 가서 다음과 같이 패키지에 대한 심볼릭 링크를 만드십시오.

이렇게하면 virtualenv를 활성화하지 않고도 가져올 수 있습니다. 간단하게 시도해보십시오 : path-to-your-virtualenv-folder / bin / python 및 패키지 가져 오기.


나는 이것이 .pth 파일이 아닌 심볼릭 링크를 사용하기 위해 반대 투표를 받았다고 생각합니다. 하지만 그것은 나를 위해 일했습니다.
Gareth Davidson

3

virtualenvwrapper를 사용하는 경우

$ cd to the parent folder
$ add2virtualenv  folder_to_add

콘솔이 표시됩니다

Warning: Converting "folder_to_add" to "/absoutle/path/to/folder_to_add"

그게 다야, 너는 잘 가야 해


1
import sys
import os

print(str(sys.path))

dir_path = os.path.dirname(os.path.realpath(__file__))
print("current working dir: %s" % dir_path)

sys.path.insert(0, dir_path)

경로가 복잡해지지 않도록 virtualenv 및 virtualenvwrapper를 사용하는 것이 좋습니다.


이것이 모든 파이썬 버전에서 작동하도록하려면 멋진 f-string f "... {dir_path}"대신 일반적인 이전 스타일 문자열 형식을 사용하십시오.
Guillaume S

댓글 주셔서 감사합니다. 사용하기 위해 수정했습니다. 기존의 방법이 복잡하고 특이한하고 아무것도 공상은 간단한 템플릿 시스템에 대한이
고무 오리

모든 것은 상대적입니다 :)
기욤 S
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.