2013-03-12 1 views
25

내가 만들고 VIRTUALENV를 활성화 (venv) 파이썬 3.3의 그 일의 내장 방식 사용 :내 virtualenv ./local/bin에 배포하고 pip 설치하는 이유는 무엇입니까?

(env) $ which python 
/my_home_directory/env/bin/python 
:이 시점 python에서

$ python3.3 -m venv env 
$ source env/bin/activate 

내가 기대 내 VIRTUALENV에서 파이썬을,이다

는 지금 배포하고 핍 설치하려는, 그래서 설치 스크립트를 다운로드하여 실행

(env)$ wget http://python-distribute.org/distribute_setup.py 
(env)$ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py 
(env)$ python distribute_setup.py 
(env)$ python get-pip.py 

이 명령이 완료 succes에를 고맙습니다. 이 시점에서 필자는 나의 venv가 "local"이라는 다른 디렉토리를 찾지 못했음을 조사했다. ENV/지방/빈 내 easy_install을하고 핍 실행 파일을 포함하고 그들은 여전히 ​​내 시스템의 기존 easy_install을하고 핍 별칭있어 :

(env)$ ls env 
bin include lib local pyvenv.cfg 
(env)$ ls env/bin 
activate pydoc python python3 python3.3 
(env)$ ls env/local/bin 
easy_install easy_install-3.3 pip pip-3.3 
(env)$ which easy_install 
/usr/bin/easy_install 
(env)$ which pip 
/usr/bin/pip 

나는이 파이썬 2.x에서의 행동에서 출발 믿습니다. 이 시점에서 나는 easy_installpip이 virtualenv의 복사본을 사용하고 있으며,이를 사용하여 알을 설치하면 virtualenv에 그 복사본을 넣을 것입니다.

조금 더 나아가서 env/bin/activate를 열면 env/bin이 시스템 경로 앞에 추가되지만 env/local/bin은 앞에 위치하지 않습니다. 그것은 내가 보는 행동을 설명합니다. 그래서

_OLD_VIRTUAL_PATH="$PATH" 
PATH="$VIRTUAL_ENV/bin:$PATH" 
PATH="$VIRTUAL_ENV/local/bin:$PATH" # my new line 
export PATH 

, 여기 무슨 일이야 : 나는 경로에 ENV/지역/bin 디렉토리를 추가 활성화 ENV/빈 /이, 무언가 같이 편집하여이 문제를 해결 할 수 있습니까? 이 버그입니까, 아니면 뭔가 빠졌습니까?

나는 우분투 12.10에서 차이를 만듭니다.

+0

virtualenv에'pip' /'easy_install'이 이미 포함되어 있다고 생각 했습니까? – MattDMo

+0

Odd. 데비안에서는 개인적인 Python 3.3 빌드를 사용하고,'env/bin'에/pip 설치를 배포합니다. 우분투 저장소에 3.3 버전이 있습니까?그렇다면 로컬 사본을 작성하여 제대로 작동하는지 확인하십시오. – eryksun

+4

@MattDMo 나는'virtualenv' 명령을 사용할 때 pip와 easy_install이 포함되어 있다고 생각하지만, 파이썬 3.3의 venv 모듈에서는 docs로 판단하지 않습니다. @eryksun 실제로 파이썬 3.3의 우분투 버전입니다. 나는 국지적으로 건물을 짓고 다시보고 할 것이다. –

답변

2

나는이 곳에 배포 ...하지만 내가 그것을 아래로 추적하지 않은 (그리고 나 '가 우분투의 파이썬 패키지에서이 문제를 나 느낌 나는 상관하지 않는다).

어떤 이유로 든 VIRTUAL_ENV 환경 변수는 배포 및 pip를 올바르게 설치하기위한 virtualenv의 루트로 설정해야합니다.

This gist은 Vinay Sajip의 코드 샘플에서 채택한 Python 3 문서에서 변수를 설정합니다. 배포 할 때 pip가 제대로 설치됩니다.

+0

확인 됨 : VIRTUAL_ENV를 virtualenv의 루트로 설정하면 pip와 distribute가 제대로 설치됩니다. 나는 이것을 우분투 13.04에서 테스트했다. 감사! –

0

나는 동일한 문제가있었습니다. activate 스크립트 파일에서 나는 (#!... 후 cource의) 첫 번째 행으로 추가해야합니다

unset PYTHON_PATH 
+3

문제를 무엇으로 확장하고 솔루션이 효과가있는 이유를 확장하면 더 좋을 것입니다. –

+0

나는 같은 오류가있어.하지만이 파일의 맨 위에 이것을 추가하면 내 문제가 해결됩니다. 시도해보십시오. – WBAR

+1

이것은 나를 위해 작동하지 않습니다. 또한 내 env/bin/activate에는 #가 없습니다! 그것의 첫번째 선으로. 위의 내용에서 언급했듯이 env/bin/activate를 편집하여 직접 해결할 수 있지만 해결 방법이 필요한 이유를 확인하려고합니다. –

1

그것은 파이썬 문서에 있습니다.

'/ usr/local'이 기본값은 exec_prefix입니다. 기본 동작을 변경하는 방법에 대한 자세한 내용은 venv docs을 읽어보십시오. 거기에 예제가 거기에 venv.EnvBuilder 만드는 방법을 보여줍니다 배포 및 pip 당신을 위해 설치합니다.

당신이 문서를 배포 발견하면 알려 주시기 바랍니다 ;-)

+0

좋은 정보, 고마워. 내 venv가 활성화되면,'sys.prefix'와'sys.exec_prefix'는 모두 venv의 루트를 가리 킵니다. 하지만 docs에서 venv로 작업하는'pip' 또는'easy_install'을 얻는 방법을 설명하는 곳을 보지 못했습니다. 특히 나는 venv 문서의 첫 번째 "메모"섹션을보고 있는데, 위의 재현 단계를 따라하면됩니다. 특히 : "물론 venv에 설치해야합니다. venv가 활성화 된 상태에서 distribute_setup.py를 실행하고 easy_install pip를 실행하면됩니다." 어떤 생각? –