Virtualenv에 다른 버전의 Python을 설치할 수 있습니까?


146

Python 2.4가 설치된 웹 호스팅에 공유 계정이 있지만 코드가 2.4와 호환되지 않습니다. Python 2.6을 Virtualenv에 직접 설치할 수 있습니까?

참고 : 공유 서버에 설치할 권한이 없습니다.

답변:


253

virtualenv에 대한 옵션은 다음과 같습니다.

$ virtualenv
You must provide a DEST_DIR
Usage: virtualenv [OPTIONS] DEST_DIR

Options:
  --version             show program's version number and exit.
  -h, --help            show this help message and exit.
  -v, --verbose         Increase verbosity.
  -q, --quiet           Decrease verbosity.
  -p PYTHON_EXE, --python=PYTHON_EXE
                        The Python interpreter to use, e.g.,
                        --python=python2.5 will use the python2.5 interpreter
                        to create the new environment.  The default is the
                        interpreter that virtualenv was installed with
                        (/usr/bin/python)
  --clear               Clear out the non-root install and start from scratch
  --no-site-packages    Don't give access to the global site-packages dir to
                        the virtual environment
  --unzip-setuptools    Unzip Setuptools or Distribute when installing it
  --relocatable         Make an EXISTING virtualenv environment relocatable.
                        This fixes up scripts and makes all .pth files
                        relative
  --distribute          Use Distribute instead of Setuptools. Set environ
                        variable VIRTUALENV_USE_DISTRIBUTE to make it the
                        default
  --prompt==PROMPT      Provides an alternative prompt prefix for this
                        environment

1) 당신이하고 싶은 일은 파이썬도 당신이 쓸 수있는 디렉토리에 설치하는 것입니다.

지침을 따를 수 있습니다 here.

파이썬 2.7.1
Python source

mkdir ~/src
mkdir ~/.localpython
cd ~/src
wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
tar -zxvf Python-2.7.1.tgz
cd Python-2.7.1

make clean
./configure --prefix=/home/${USER}/.localpython
make
make install

2) virtualenv 설치
virtualenv source

cd ~/src
wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.5.2.tar.gz#md5=fbcefbd8520bb64bc24a560c6019a73c
tar -zxvf virtualenv-1.5.2.tar.gz
cd virtualenv-1.5.2/
~/.localpython/bin/python setup.py install

3) 로컬 파이썬을 사용하여 virtualenv 생성
virtualenv docs

mkdir /home/${USER}/virtualenvs
cd /home/${USER}/virtualenvs
~/.localpython/bin/virtualenv py2.7 --python=/home/${USER}/.localpython/bin/python2.7

4) 환경 활성화

cd ~/virtualenvs/py2.7/bin
source ./activate

5) 확인

(py2.7)$ python
Python 2.7.1 (r271:86832, Mar 31 2011, 15:31:37) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

(py2.7)$ deactivate
$ python
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

14
훌륭한 글쓰기! 그러나 두 가지 의견 : 1. 실제로 반환 오류가 발생 make clean하기 전에 할 필요가 없었습니다 . 2. 일하지 않았다 대신 일했다. 나는 그것이 virtualenv 버전으로 가정합니다. 건배! ./configure --prefix=/home/<user>/.localpythonmake cleanvirtualenv name -p=/python/pathvirtualenv name -p /python/path
zzart

1
gcc에서 탈옥 상태 였지만 1 단계에서 ActiveState Python을 대신 사용할 수있었습니다. docs.activestate.com/activepython/2.7/…
Scott Stafford

3
다음은 가능한 한 전체 설치에 가깝게 작동하도록 데비안에서 설치해야하는 모듈 목록입니다.curl gcc build-essential libncursesw5-dev libreadline5-dev libssl-dev libgdm-dev libbz2-dev libc6-dev libsqlite3-dev tk-dev
Claudiu

1
Nitpick : source강타입니다. POSIX는 다음과 같습니다 ..
l0b0

4
이 많은 기본 모듈을 수행하는 것이 빠졌습니다.
user299709

20

전제 조건 :

  1. sudo easy_install virtualenv
  2. sudo pip install virtualenvwrapper

Python2.6으로 virtualenv 설치 :

  1. 다른 버전의 Python /usr/local또는 다른 위치에 수동으로 다운로드하여 빌드하고 설치할 수 있습니다 .

  2. 이 아닌 다른 위치 인 경우 /usr/localPATH에 추가하십시오.

  3. 쉘을 다시로드하여 업데이트 된 PATH를 선택하십시오.

  4. 이 시점에서, 당신은 당신의 쉘에서 다음이 파이썬 바이너리를 호출 할 수 있어야 python2.5하고python2.6

  5. 다음을 사용하여 virtualenv의 새 인스턴스를 작성하십시오 python2.6.

    mkvirtualenv --python=python2.6 yournewenv


4
mkvirtualenv 명령은 virtualenvwrapper가 설치된 경우에만 작동한다고 생각합니다.
DTing

4

이 절차는 Python2.7을 어디에나 설치 하고env 폴더 내의 절대 경로 참조를 제거 합니다 (virtuenv에 의해 관리 됨) . virtualenv조차도 절대적으로 설치되지는 않습니다.

따라서 이론적으로 최상위 디렉토리를 타르볼에 놓고 타르볼 내에 구성된 모든 것을 파이썬 (또는 의존성)이 설치 되지 않은 머신에서 배포하고 실행할 수 있습니다 .

질문이 있으면 저에게 연락하십시오. 이것은 내가 진행중인 진행중인 대규모 프로젝트의 일부입니다. 이제 드롭을 위해 ...

  1. 환경 폴더를 설정하십시오.

    $ mkdir env
    $ mkdir pyenv
    $ mkdir dep
    
  2. 어떤 형태의 루트 OS 설치 없이 Python-2.7.3 및 virtualenv 얻습니다 .

    $ cd dep
    $ wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
    $ wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py
    
  3. pyenvdir에 Python-2.7.3을 추출하여 설치하십시오 . make clean두 번째, 세 번째, N 번째 시간 에이 작업을 수행하는 경우 선택 사항입니다 ...

    $ tar -xzvf Python-2.7.3.tgz
    $ cd Python-2.7.3
    $ make clean
    $ ./configure --prefix=/path/to/pyenv
    $ make && make install
    $ cd ../../
    $ ls
    dep    env    pyenv
    
  4. virtualenv 생성

    $ dep/virtualenv.py --python=/path/to/pyenv/bin/python --verbose env
  5. python2.7에 symlink를 수정하십시오. env/include/

    $ ls -l env/include/
    $ cd !$
    $ rm python2.7
    $ ln -s ../../pyenv/include/python2.7 python2.7
    $ cd ../../
    
  6. env에서 나머지 파이썬 심볼릭 링크를 수정하십시오. 위와 같이 심볼릭 링크 된 디렉토리를 삭제하고 다시 작성해야합니다. 또한 내부 심볼릭 링크 작성을 강제하는 구문이 있습니다.

    $ ls -l env/lib/python2.7/
    $ cd !$
    $ ln -sf ../../../pyenv/lib/python2.7/UserDict.py UserDict.py
    [...repeat until all symbolic links are relative...]
    $ cd ../../../
    
  7. 테스트

    $ python --version
    Python 2.7.1
    $ source env/bin/activate
    (env)
    $ python --version
    Python 2.7.3
    

알로하


1
4 단계는 pip 모듈이 필요합니다. 최신 Python 2.7.9로 시도했습니다.
로마 수시

1
많은 오류로 매우 불완전한 답변을 시도했습니다.
Alex R

4

virtualenvwrapper를 사용하고 있으며 $ PATH를 수정하고 싶지 않습니다. 방법은 다음과 같습니다.

$ which python3
/usr/local/bin/python3

$ mkvirtualenv --python=/usr/local/bin/python3 env_name

3

일반적인 접근 방식은 소스를 다운로드하고 로컬 (virtualv에서는 직접이 아님)을 빌드 및 설치 한 다음 해당 로컬 Python 설치를 사용하여 새 virtualenv를 작성하는 것입니다. 일부 시스템에서는 소스에서 빌드하지 않고 사전 빌드 된 Python을 다운로드하여 설치할 수 있습니다.


3

이제 며칠 동안 업데이트 된 Python 버전을 사용하는 가장 쉬운 방법은 conda를 통해 conda 환경에 설치하는 것입니다.


conda 설치 (이를 위해 virtualenv가 필요할 수 있습니다)

pip install conda

conda 환경에 새로운 Python 버전 설치

수동 다운로드가 필요하지 않으므로이 답변을 여기에 추가하고 있습니다. conda당신을 위해 그렇게 할 것입니다.

이제 원하는 Python 버전의 환경을 만드십시오. 이 예제에서는 3.5.2작성 시점 (2016 년 8 월)의 최신 버전이므로을 사용합니다.

conda create -n py35 python=3.5.2

conda가 패키지를 설치할 수있는 환경을 만듭니다.


이 환경을 활성화하려면 (리눅스가 아니라면 conda docs를 확인한다고 가정합니다 ) :

source activate py35

이제 environemnt에 pip 또는 conda를 통해 필요한 것을 설치하십시오 (conda는 바이너리 패키지를 더 잘 지원합니다).

conda install <package_name>

2

pyenv를 사용할 수 있습니다.

anaconda, jython, pypy 등 다양한 버전이 있습니다 ...

https://github.com/yyuu/pyenv

간단한 설치 pyenv install 3.2.6

pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
  2.4.2
  2.4.3
  2.4.4
  2.4.5
  2.4.6
  2.5
  2.5.1
  2.5.2
  2.5.3
  2.5.4
  2.5.5
  2.5.6
  2.6.6

...


1

질문에 2.6 설치에 대해 구체적으로 설명되어 있지만 누군가이 문제가 발생할 경우 위의 훌륭한 답변에 몇 가지 중요한 사항을 추가하고 싶습니다. 레코드의 경우, 우분투 10.04 상자에 2.7을 설치하려고했습니다.

첫째, 여기 모든 답변에 설명 된 방법에 대한 동기 부여는 deadsnake의 ppa에서 Python을 설치 하는 것이 완전히 실패한 것입니다. 따라서 지역 파이썬을 구축하는 것이 좋습니다.

그렇게 시도한 결과 pip (with sudo apt-get install pip) 의 기본 설치에 의존하는 것이 적절하다고 생각했습니다. 불행히도 이것은 잘못입니다. 나는 모든 불쾌한 문제를 겪었고 결국 virtualenv를 만들 수 없었습니다.

따라서, 나는 높게하는 것이 좋습니다 로컬 핍 설치 와 함께 wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py && python get-pip.py --user. 관련 질문은 나 에게이 힌트를 주었다.

이것이 작동하지 않으면 libssl-devUbuntu 또는 openssl-devCentOS 용으로 설치되어 있는지 확인하십시오 . 로 설치 apt-get또는 yum재 빌드 파이썬하고 (이미 설치된 경우에는 아무것도 제거 할 필요가 없습니다, 상단에 이렇게). py shell에서 get-pip실행 import ssl하여 확인할 수 있습니다 .

마지막으로, 선언 .local/bin하고 로컬 파이썬을 경로로 지정 which pip하고 and로 확인하십시오 which python.


1

pyenv로 전체 가이드

pyenv가 설치되어 있지 않으면 pyenv-installer로 설치하십시오 :

$ curl https://pyenv.run | bash

사용자 정의 파이썬 버전을 3.5.6사용하려면 다음을 사용하십시오.

pyenv install 3.5.6
pyenv virtualenv 3.5.6 name_of_your_env
pyenv activate name_of_your_env

0

아니요, 그러나 디렉토리 아래에 격리 된 Python 빌드 (예 : ActivePython )를 설치할 수 있습니다 $HOME.

이 방법은 가장 빠르며 파이썬을 직접 컴파일하지 않아도됩니다.

(보너스로, 당신은 또한은 ActiveState의 사용에 도착 바이너리 패키지 관리자 )


virtualenv가 다른 Python 버전을 설치할 수 있으므로 실제로 거짓입니다.
Raito

0

그래서 여기 @toszter 응답을 기반으로 구축 필자을 간다, 적절한 답을 발견하지 않은,하지만 시스템 파이썬을 사용하지 않는 것이 많은 다룰 때 시스템 레벨에서 setuptools에와 VIRTUALENV를 설치하는 것이 좋은 생각이 아니다, (당신은 알고 있습니다 파이썬 구성) :

#!/bin/sh

mkdir python_ve
cd python_ve

MYROOT=`pwd`
mkdir env pyenv dep

cd ${MYROOT}/dep
wget https://pypi.python.org/packages/source/s/setuptools/setuptools-15.2.tar.gz#md5=a9028a9794fc7ae02320d32e2d7e12ee
wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py
wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz
xz -d Python-2.7.9.tar.xz

cd ${MYROOT}/pyenv
tar xf ../dep/Python-2.7.9.tar
cd Python-2.7.9
./configure --prefix=${MYROOT}/pyenv && make -j 4 && make install

cd ${MYROOT}/pyenv

tar xzf ../dep/setuptools-15.2.tar.gz

cd ${MYROOT}

pyenv/bin/python dep/virtualenv.py --no-setuptools --python=${MYROOT}/pyenv/bin/python --verbose env
env/bin/python pyenv/setuptools-15.2/setup.py install
env/bin/easy_install pip

echo "virtualenv in ${MYROOT}/env"

치킨 달걀 문제를 해결하는 비결은 setuptools없이 virtualenv를 먼저 만드는 것입니다. 그렇지 않으면 실패하기 때문에 (핍을 찾을 수 없음). pip / wheel을 직접 설치하는 것이 가능할 수도 있지만 어떻게 든 easy_install이 가장 먼저 생각났습니다. 또한 구체적인 버전을 제거하여 스크립트를 개선 할 수 있습니다.

NB. 스크립트에서 xz 사용


0

우선, 멋진 답변을 해주셔서 감사합니다. 거의 완벽합니다.

공유 호스팅에서 GCC 액세스 권한이없는 사람들은 Scott Stafford와 같은 일반적인 파이썬 대신 ActivePython으로 이동하십시오. 이에 대한 명령은 다음과 같습니다.

wget http://downloads.activestate.com/ActivePython/releases/2.7.13.2713/ActivePython-2.7.13.2713-linux-x86_64-glibc-2.3.6-401785.tar.gz

tar -zxvf ActivePython-2.7.13.2713-linux-x86_64-glibc-2.3.6-401785.tar.gz

cd ActivePython-2.7.13.2713-linux-x86_64-glibc-2.3.6-401785

./install.sh

파이썬 디렉토리의 경로를 묻습니다. 시작하다

../../.localpython

DTing의 답변에서 1 단계로 위의 내용을 바꾸고 그 후에 2 단계로 진행하십시오. ActivePython 패키지 URL은 새로운 릴리스에 따라 변경 될 수 있습니다. 당신은 항상 여기에서 새로운 URL을 얻을 수 있습니다 : http://www.activestate.com/activepython/downloads

URL을 기반으로 수신 된 파일을 기반으로 tar 및 cd 명령의 이름을 변경해야합니다.

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