2011-10-05 6 views
11

간단한 질문
virtualenv/virtualenvwrapper를 사용하면 특정 가상 환경에 연결된 python 호출에 접두사를 추가 할 수 있습니까?OS X에서 32 비트 모드로 virtualenv를 사용하여 비 시스템 파이썬을 실행

배경
brew installed 파이썬 2.7을 사용하여 여러 개의 가상 환경을 갖고 싶습니다. 그러나 일부는 64 비트 모드와 다른 32 비트 모드로 실행 중입니다.

아래에는 OS X 개발을위한 일반적인 설정이 나와 있습니다. python 호출에 추가하고자하는 특정 접두어는 파이썬이 32 비트 모드로 실행되도록 강제하는 arch -i386입니다. 또 다시 가장 중요한 부분은 workon env32를 호출 한 후 만 추가된다는 것입니다 (예제 참조). 내 .bash_profile에서 별칭을 설정할 수 있다는 것을 알고 있지만 가상 환경을 만들거나 제거 할 때마다 수정해야합니다.

EDIT
간단한 별칭을 사용하여 발생하는 문제에 대해 자세히 설명하기 위해 하나 이상의 32 비트 가상 환경이있을 수 있습니다. 이것은 workon에 대한 호출이 python 호출에 접두어를 추가하는 것이 이상적이므로 터미널의 워크 플로가 동일하게됩니다. 의미는 workon env_x_32을 호출 한 후 python을 사용할 수 있고 arch -i386는 터미널을 사용할 때 투명하게 나타납니다.

파이썬 설치 :

> brew install python --framework --universal 

(PIP, VIRTUALENV 및 virtualenvwrapper를 설치 한 후) 가상 환경을 만들기 :

> mkvirtualenv env_1_64 --no-site-packages 
> mkvirtualenv env_1_32 --no-site-packages 

> mkvirtualenv env_2_64 --no-site-packages 
> mkvirtualenv env_2_32 --no-site-packages 

64 비트 사용 :

> workon env_1_64 
> python myscript.py 

> workon env_2_64 
> python my_other_project_script.py 

32 비트 사용 : (현재/비 이상적인)

> workon env_1_32 
> arch -i386 python myscript.py 

> workon env_2_32 
> arch -i386 python my_other_project_script.py 

32 비트 사용 : (이상적인) Sean으로 실행

> workon env_1_32 
> python my_32bit_project.py # Note that the arch -i386 would be transparent 

솔루션
' s comments :

32 비트로 실행하고 싶었던 환경의 활성화/비활성화 안에 별칭을 추가했습니다. 자세한 내용은 아래를 참조하십시오.

env_1_32 : 스크립트 활성화

# This file must be used with "source bin/activate" *from bash* 
# you cannot run it directly 

deactivate() { 
    alias python='python' # <---- Added this line 

    # reset old environment variables 
    if [ -n "$_OLD_VIRTUAL_PATH" ] ; then 
     PATH="$_OLD_VIRTUAL_PATH" 
     export PATH 
     unset _OLD_VIRTUAL_PATH 
    fi 

    # ****** Removed Content to keep the post shorter********* 

} 

# unset irrelavent variables 
deactivate nondestructive 

VIRTUAL_ENV="/Users/Adam/.envs/env_1_32" 
export VIRTUAL_ENV 

# This should detect bash and zsh, which have a hash command that must 
# be called to get it to forget past commands. Without forgetting 
# past commands the $PATH changes we made may not be respected 
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then 
    hash -r 
fi 

# ****** Removed Content to keep the post shorter********* 

alias python='arch -i386 python' # <---- Added this line to run as 32bit 
+0

어제이 질문 (및 답변)은 나에게 매우 유용했습니다. 감사합니다. 그러나, 오늘은 내 프로젝트에 최상위 'main.py'스크립트가 없기 때문에 다시 붙어 있습니다. 대신 'setup.py install'또는 'setup.py'스크립트를 실행할 때 setuptools (?)가 생성합니다. 내 setup.py에서 'entry_points'설정을 사용하여 '개발'하십시오. 즉, 사용자의 컴퓨터에 배포 할 때 '아치'별칭을 삽입 할 수있는 공간이 없습니다. 이것에 대해 별도의 질문을 할 수 있습니다. –

답변

6

이 활성화 스크립트에 별칭을 추가하고 VIRTUALENV 당신이 그것을 사용하려는 각 유형을 활성화 활성화합니다.

$ cd env32 
$ echo "alias python='arch -i386 python'" >> bin/activate 
$ source bin/activate 
$ python myscript.py 
+0

virtualenv를 만들 때 --no-site-packages 옵션을 사용하는 것이 좋습니다. –

+0

일반적으로 나는 그렇다. 이 정확한 인스턴스에서 wxPython (양조 된 버전에 설치됨)을 사용하고 있으므로 실제로 사이트 패키지가 필요합니다. –

+0

질문에 대한 응답으로 편집 내용을 확인하십시오. –