이미 생성 된 virtualenv에서 pythonpath를 어떻게 설정합니까?


106

어떤 파일을 어떻게 편집합니까? 가상 환경을 만들었습니다.


올바른 디렉토리를 가리키는 지 확인하십시오. 아직없는 경우 새로 만들기 버튼을 클릭하여 만듭니다.

11
add2virtualenv 명령을 사용하십시오 .
s29

5
add2virtualenv는 virtualenvwrapper명령입니다. 의 일부가 아닙니다 virtualenv.
kojiro

답변:


124

# 2 수정

정답은 @arogachev의 것 입니다.


PYTHONPATHvirtualenv 에서 사용되는 것을 변경하려면 virtualenv의 bin/activate파일에 다음 행을 추가 할 수 있습니다 .

export PYTHONPATH="/the/path/you/want"

이렇게하면 PYTHONPATH이 virtualenv를 사용할 때마다 새 항목 이 설정됩니다.

편집 : (@RamRachum의 의견에 대답하기 위해)

에 원래 값으로 복원하려면 deactivate다음을 추가하십시오.

export OLD_PYTHONPATH="$PYTHONPATH"

앞서 언급 한 줄 앞에 다음 줄을 bin/postdeactivate스크립트에 추가합니다 .

export PYTHONPATH="$OLD_PYTHONPATH"

1
에서도 제거 deactivate됩니까?
Ram Rachum 2012 년

1
따라서 새로 생성 된 가상 환경이 PYTHONPATHvirtualenv 로컬 경로 대신 기본값 (전역 환경)을 가지고 있음을 의미 합니까?
ducin 2013

6
이것은 나를 위해 매우 잘 작동했으며 virtualenvwrapper를 사용하지 않습니다. 유일한 참고 사항은 그러한 bin / postdeactivate 스크립트가 없었으며 오히려 activate에 비활성화 기능이 있다는 것입니다. 따라서 코드 줄을 거기에 넣어야하며 함수의 나머지 작업으로 if 문으로 감싸도록주의해야합니다.
Niccolò

2
virtualenv가 기본적으로이를 수행하지 않는 것이 이상하게 보입니다.
Seth

2
편집 # 2는 거짓말입니다! :) 정답은 @ arjen-p-de-vries의 것입니다
Berriel

73

@ s29의 댓글이 답이어야합니다.

가상 환경에 디렉토리를 추가하는 한 가지 방법은 virtualenvwrapper (많은 작업에 유용함)를 설치 한 다음 수행하는 것입니다.

mkvirtualenv myenv
workon myenv
add2virtualenv . #for current directory
add2virtualenv ~/my/path

이 경로를 제거하려면 파일을 편집하십시오. myenvhomedir/lib/python2.7/site-packages/_virtualenv_path_extensions.pth

virtualenvwrapper에 대한 문서는 http://virtualenvwrapper.readthedocs.org/en/latest/ 에서 찾을 수 있습니다.

이 기능에 대한 특정 문서는 http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html?highlight=add2virtualenv 에서 찾을 수 있습니다.


6
제거 :add2virtualenv -d
thecheech

1
훨씬 더
낫기 때문에이

27

.pth검색 할 디렉터리가 포함 된 파일을 만들어 디렉터리에 배치 할 수 site-packages있습니다. 예 :

cd $(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
echo /some/library/path > some-library.pth

효과는 추가와 동일 /some/library/pathsys.path하고, 지방에 남아 virtualenv설정.


7
저는이 접근 방식을 정말 좋아합니다. 활성화 / 비활성화 라인을 추가하는 것만 큼 변덕스럽지 않으며 virtualenvwrapper를 사용할 필요가 없습니다. 사이트 패키지 디렉토리를 찾기 위해 python을 호출하지 않으려면 상당히 예측 가능한 경로에 $VIRTUALENV_ROOT/lib/pythonX.Y/site-packages있습니다. .pth 파일에 대한 문서 : docs.python.org/3.6/library/site.html
알렉

2
내 작업 공간이 내 파일 시스템에서 이동하기 때문에 절대 경로를 입력하고 싶지 않았습니다. 그리고 내 프로젝트 경로에는 공백이 있습니다. 그래서 약간 수정 된 명령을 입력했습니다. pushd "$(venv/bin/python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")" ...path/to/project/venv/lib/python3.7/site-packages ...path/to/project echo ../../../../src > my_project.pth popd그런 다음 virtualenv를 비활성화하고 다시 활성화했습니다. 이제 내 프로젝트 디렉토리가 어디에 있는지 알아야하는 프로젝트 코드를 실행할 수 있습니다.
Jim DeLaHunt

4
이것이 정답입니다. 공급 업체에서 제공 한 스크립트 ( /bin/activate)를 수정 하는 것은 잘못된 행위이며 타사 도구를 설치하는 것은 기본 제공 방식을 사용하는 것보다 열등합니다.
Red

2
  1. virtualenv 초기화
cd venv

source bin/activate
  1. 다음 명령을 입력하여 Python 경로를 설정하거나 변경하십시오.
export PYTHONPATH='/home/django/srmvenv/lib/python3.4'
  1. 파이썬 경로를 확인하려면 파이썬에 입력하십시오.
   python

      \>\> import sys

      \>\> sys.path

1

파일 .virtualenvrc이 현재 디렉토리에있는 경우 파일을 소싱하고 PYTHONPATH활성화 / 비활성화시 저장 / 복원하도록 활성화 스크립트를 수정 했습니다 .

activate여기 에서 패치 된 스크립트를 찾을 수 있습니다 . . virtualenv 1.11.6에 의해 생성 된 활성화 스크립트의 드롭 인 대체품입니다.

그런 다음 내 다음과 같은 내용을 추가했습니다 .virtualenvrc.

export PYTHONPATH="${PYTHONPATH:+$PYTHONPATH:}/some/library/path"

-20

여기에 이미 답변되어 있습니다-> 내 가상 환경 (python)으로 인해 PYTHONPATH가 중단됩니까?

UNIX / LINUX

"export PYTHONPATH = / usr / local / lib / python2.0"을 ~ / .bashrc 파일에 추가하고 "source ~ / .bashrc"OR ". ~ / .bashrc"를 입력하여 소싱합니다.

윈도우 XP

1) 제어판으로 이동 2) 시스템을 두 번 클릭합니다. 3) 고급 탭으로 이동합니다. 4) 환경 변수를 클릭합니다.

시스템 변수 창에서 PYTHONPATH라는 변수가 있는지 확인하십시오. 이미있는 경우 올바른 디렉토리를 가리키는 지 확인하십시오. 아직없는 경우 새로 만들기 버튼을 클릭하여 만듭니다.

파이썬 코드

또는 코드 아래에서 수행 할 수도 있습니다.

import sys
sys.path.append("/home/me/mypy") 

4
-1 : 이것은 virtualenv의 PYTHONPATH가 아니라 사용자의 PYTHONPATH를 지정합니다.
twneale
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.