別のバージョンのPythonをVirtualenvにインストールすることは可能ですか?


148

Python 2.4がインストールされているウェブホスティングに共有アカウントを持っていますが、私のコードは2.4と互換性がありません。Python 2.6をVirtualenvに直接インストールすることは可能ですか?

注:共有サーバーにインストールする権限がありません。

回答:


255

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)あなたがしたいのはあなたも書くことができるディレクトリにpythonをインストールすることです。

指示に従うことができますhere

Python2.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)ローカルPythonを使用して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
素晴らしい記事!ただし、2つのコメント:1 。実際にエラーが返さmake cleanれる前に行う 必要はありませんでした。2.機能しませんでした代わりに機能しました。私はそれがvirtualenvバージョンにダウンしていると思います。乾杯!./configure --prefix=/home/<user>/.localpythonmake cleanvirtualenv name -p=/python/pathvirtualenv name -p /python/path
zzart 2012年

1
私はgccから脱獄しましたが、ステップ1で代わりにActiveState Pythonを使用できました:docs.activestate.com/activepython/2.7/…–
スコットスタッフォード

3
ここでは完全な可能性としてインストールの近くに仕事にこれを取得するためにあなたが(Debianの上で)インストールされている必要がありモジュールのリストがあります:curl gcc build-essential libncursesw5-dev libreadline5-dev libssl-dev libgdm-dev libbz2-dev libc6-dev libsqlite3-dev tk-dev
クラウディウ

1
Nitpick:sourceバシズムです。POSIXに相当するものは.です。
l0b0 2014

4
この多くの基本モジュールを実行することが欠落していることがわかりました
user299709 2015年

20

前提条件:

  1. sudo easy_install virtualenv
  2. sudo pip install virtualenvwrapper

Python2.6でvirtualenvをインストールする:

  1. 別のバージョンのPythonを手動でダウンロード、ビルド、インストールして、 /usr/local別の場所にます。

  2. それ以外の場所の場合 /usr/local、PATHに追加します。

  3. シェルをリロードして、更新されたPATHを取得します。

  4. この時点から、シェルから次の2つのPythonバイナリを呼び出すことができるはずです。 python2.5し、python2.6

  5. 次のコマンドを使用してvirtualenvの新しいインスタンスを作成しますpython2.6

    mkvirtualenv --python=python2.6 yournewenv


4
mkvirtualenvコマンドは、virtualenvwrapperがインストールされている場合にのみ機能すると思います。
2011年

4

この手順では、Python2.7をどこにでもインストールし、envフォルダー内の絶対パス参照を削除します(virtualenvによって管理されます)。virtualenvでさえ絶対にインストールされていません。

したがって、理論的には、最上位ディレクトリをtarballにドロップし、Pythonを搭載していないマシンで、tarball内で構成されたものを配布および実行できます。 (または依存関係)がインストールされ。

ご不明な点がございましたらご連絡ください。これは、私がエンジニアリングしている進行中のより大きなプロジェクトの一部にすぎません。さて、ドロップのために...

  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. Python-2.7.3を解凍してpyenvdirにインストールします。make cleanこれを2回目、3回目、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へのシンボリックリンクを修正 env/include/

    $ ls -l env/include/
    $ cd !$
    $ rm python2.7
    $ ln -s ../../pyenv/include/python2.7 python2.7
    $ cd ../../
    
  6. envの残りのPythonシンボリックリンクを修正します。上記のように、シンボリックにリンクされたディレクトリを削除して再作成する必要があります。また、インプレースシンボリックリンクの作成を強制する構文は次のとおりです。

    $ 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モジュールが必要なようです。最新のPython2.7.9で試してみました。
ローマンスージー2015

1
これを通り抜けようとしましたが、非常に不完全な答えで、多くのエラーがありました。
Alex R

4

私はvirtualenvwrapperを使用していて、$ PATHを変更したくありません。方法は次のとおりです。

$ which python3
/usr/local/bin/python3

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

4

今日、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がパッケージをインストールするための環境を作成します


この環境をアクティブ化するには(Linuxを想定しています。そうでない場合はconda docsを確認してください):

source activate py35

次に、必要なものをpipまたはcondaを介してenvironemntにインストールします(condaの方がバイナリパッケージのサポートが優れています)。

conda install <package_name>

3

通常のアプローチは、ソースをダウンロードし、ローカルで(ただし、virtualenvに直接ではなく)ビルドしてインストールし、そのローカルPythonインストールを使用して新しいvirtualenvを作成することです。一部のシステムでは、ソースからビルドするのではなく、ビルド済みのpythonをダウンロードしてインストールできる場合があります。


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のインストールについて具体的に説明していますが、誰かがこれに遭遇した場合に備えて、上記の優れた回答にいくつかの重要なポイントを追加したいと思います。ちなみに、私の場合は、ubuntu10.04ボックスに2.7をインストールしようとしていました。

まず、ここでのすべての回答に記載されている方法に対する私の動機は、deadsnakeのppaからPythonをインストールすることが完全に失敗したことです。したがって、ローカルPythonを構築することが道です。

そうしてみたので、pipのデフォルトのインストール(with sudo apt-get install pip)に頼るのが適切だと思いました。残念ながら、これは間違っています。厄介な問題がすべて発生し、最終的にvirtualenvを作成できなくなっていたことが判明しました。

したがって、pipをローカルインストールすることを強くお勧めしwget https://raw.github.com/pypa/pip/master/contrib/get-pip.py && python get-pip.py --userます。この関連する質問は私にこのヒントを与えました。

これが機能しない場合はlibssl-dev、Ubuntuまたはopenssl-devCentOS用がインストールされていることを確認してください。apt-getまたはを使用してそれらをインストールしてyumから、Pythonを再ビルドします(すでにインストールされている場合は何も削除する必要はありません。上部で削除してください)。get-pipそれについて不平を言う、あなたはimport sslpyシェルで実行することによってそうチェックすることができます。

最後には、宣言することを忘れないでください.local/bin、地元のpythonのパスに、に確認してくださいwhich pipwhich python



0

いいえ。ただし、ディレクトリの下に分離されたPythonビルド(ActivePythonなど)をインストールできます$HOME

このアプローチは最速であり、Pythonを自分でコンパイルする必要はありません。

(ボーナスとして、ActiveStateのバイナリパッケージマネージャーも使用できます)


virtualenvは別のPythonバージョンをインストールできるため、実際にはfalseです。
ライト2015

0

適切な答えが見つからなかったので、@ toszterの答えに基づいて構築されていますが、システムPythonを使用してません(多くの場合、システムレベルでsetuptoolsとvirtualenvをインストールすることは必ずしも良い考えではありません) Python構成):

#!/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が見つかりません)。pip / Wheelを直接インストールすることは可能かもしれませんが、どういうわけかeasy_installが最初に頭に浮かびました。また、具体的なバージョンを除外することで、スクリプトを改善できます。

注意。スクリプトでxzを使用する。


0

まず第一に、素晴らしい答えをありがとうDTing。それはかなり完璧です。

共有ホスティングでGCCアクセスができないことに苦しんでいる人は、ScottStaffordが述べたような通常のPythonではなく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

Pythonディレクトリへのパスを尋ねられます。入る

../../.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.