Virtualenv'e başka bir Python sürümü yüklemek mümkün mü?


148

Python 2.4 kurulu bir web barındırma hesabım var, ancak kodum 2.4 ile uyumlu değil. Python 2.6'yı doğrudan Virtualenv'e kurmak mümkün müdür?

Not: Paylaşılan sunucuya yükleme iznim yok.

Yanıtlar:


255

İşte virtualenv için seçenekler

$ 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) Yapmak istediğiniz, python'u sizin de yazabileceğiniz bir dizine kurmaktır.

Talimatları takip edebilirsiniz here.

Python 2.7.1 için
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'i kurun
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) Yerel python'unuzu kullanarak bir virtualenv oluşturun
virtualenv docs

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

4) Ortamı etkinleştirin

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

5) Kontrol edin

(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
mükemmel yazı! Yine de iki yorum: 1. Yapmadan make cleanönce yapmak zorunda değildim ./configure --prefix=/home/<user>/.localpythonaslında make cleanhata döndürdü. 2. virtualenv name -p=/python/pathçalışmadı yerine virtualenv name -p /python/pathçalıştı. Virtualenv sürümüne düştüğünü varsayıyorum. şerefe!
zzart

1
Gcc dışında hapse atılmıştım ancak 1. adımda bunun yerine ActiveState Python'u kullanabildim: docs.activestate.com/activepython/2.7/…
Scott Stafford

3
Bunu tam kuruluma olabildiğince yakın bir şekilde çalıştırmak için yüklemeniz gereken modüllerin listesi (debian'da):curl gcc build-essential libncursesw5-dev libreadline5-dev libssl-dev libgdm-dev libbz2-dev libc6-dev libsqlite3-dev tk-dev
Claudiu

1
sourceNitpick : bir bashizmdir. POSIX eşdeğeri ..
l0b0

4
Bu kadar temel modülü yapmanın eksik olduğunu
görüyorum

20

Ön koşullar:

  1. sudo easy_install virtualenv
  2. sudo pip install virtualenvwrapper

Virtualenv'i Python2.6 ile yükleme:

  1. Python'un başka bir sürümünü /usr/localveya başka bir konuma manuel olarak indirebilir, oluşturabilir ve kurabilirsiniz .

  2. Dışında başka bir /usr/localkonumsa, onu PATH'nize ekleyin.

  3. Güncellenen PATH'i almak için kabuğunuzu yeniden yükleyin.

  4. Bu noktadan itibaren, aşağıdaki 2 python ikili dosyasını kabuğunuzdan çağırabilmelisiniz python2.5vepython2.6

  5. Aşağıdakilerle yeni bir virtualenv örneği oluşturun python2.6:

    mkvirtualenv --python=python2.6 yournewenv


4
mkvirtualenv komutunun yalnızca virtualenvwrapper kurulu olduğunda çalıştığını düşünüyorum.
dting

4

Bu prosedür Python2.7 yükler yerde ve her mutlak yol referansları ortadan kaldırır senin içinde envklasöründe (virtualenv tarafından yönetilen) . Virtualenv bile kesinlikle kurulmamış.

Böylece, teorik olarak, en üst düzey dizini bir tarball'a bırakabilir, Python (veya herhangi bir bağımlılık) kurulu olmayan bir makinede tarball içinde yapılandırılan her şeyi dağıtabilir ve çalıştırabilirsiniz .

Herhangi bir sorunuz varsa bana ulaşın. Bu, mühendisliğini yaptığım devam eden, daha büyük bir projenin sadece bir parçası. Şimdi, damla ...

  1. Ortam klasörlerini ayarlayın.

    $ mkdir env
    $ mkdir pyenv
    $ mkdir dep
    
  2. Python-2.7.3 ve virtualenv'i herhangi bir kök işletim sistemi kurulumu olmadan edinin .

    $ 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'ü ayıklayın ve dizine yükleyin pyenv. make cleanBunu 2., 3., N. kez yapıyorsanız isteğe bağlıdır ...

    $ 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. Sanal ortamınızı oluşturun

    $ dep/virtualenv.py --python=/path/to/pyenv/bin/python --verbose env
    
  5. Symlink'i python2.7 olarak sabitleyin env/include/

    $ ls -l env/include/
    $ cd !$
    $ rm python2.7
    $ ln -s ../../pyenv/include/python2.7 python2.7
    $ cd ../../
    
  6. Env'de kalan python sembolik bağlarını düzeltin. Yukarıdaki gibi sembolik olarak bağlantılı dizinleri silmeniz ve yeniden oluşturmanız gerekecek. Ayrıca, yerinde sembolik bağlantı oluşturmaya zorlamak için sözdizimi burada.

    $ 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. Ölçek

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

Aloha.


1
Adım 4 pip modülüne ihtiyaç duyuyor gibi görünüyor. En son Python 2.7.9 ile denendi.
Roman Susi

1
Bunu denemeye çalıştım, birçok hata ile çok eksik cevap.
Alex R

4

Virtualenvwrapper kullanıyorum ve $ PATH'ı değiştirmek istemiyorum, işte bunu nasıl yapacağınız:

$ which python3
/usr/local/bin/python3

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

4

Şimdi bir gün, daha güncel bir Python sürümüne sahip olmanın en kolay yolu, onu conda aracılığıyla bir conda ortamına kurmaktır.


Conda'yı yükleyin (bunun için bir virtualenv'e ihtiyacınız olabilir)

pip install conda

Conda ortamına yeni bir Python sürümü yükleme

Bu yanıtı buraya ekliyorum çünkü manuel indirme gerekmiyor. condabunu senin için yapacak.

Şimdi istediğiniz Python sürümü için bir ortam oluşturun. Bu örnekte kullanacağım 3.5.2, çünkü bu yazım zamanının en son sürümü (Ağustos 2016).

conda create -n py35 python=3.5.2

Conda'nın paketleri kurması için bir ortam yaratacak


Bu ortamı etkinleştirmek için ( linux'u varsayıyorum, aksi takdirde conda belgelerine bakın ):

source activate py35

Şimdi ihtiyacınız olanı ya pip ya da conda aracılığıyla çevreye kurun (conda'nın daha iyi ikili paket desteği vardır).

conda install <package_name>

3

Genel yaklaşım, kaynağı indirip yerel olarak derleyip kurmak (ancak doğrudan virtualenv'de değil) ve ardından bu yerel Python kurulumunu kullanarak yeni bir virtualenv oluşturmaktır. Bazı sistemlerde, kaynaktan derlemek yerine önceden oluşturulmuş bir python indirmek ve kurmak mümkün olabilir.


2

Pyenv kullanabilirsiniz.

Anaconda, jython, pypy ve benzeri birçok farklı sürüm var ...

https://github.com/yyuu/pyenv

Kurulum kadar basit 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

Soru 2.6'nın kurulumunu özel olarak tanımlasa da, birinin bununla karşılaşması durumunda yukarıdaki mükemmel cevaplara bazı önemli noktalar eklemek istiyorum. Kayıt için, benim durumum 2.7'yi bir ubuntu 10.04 kutusuna yüklemeye çalışmamdı.

İlk olarak, buradaki tüm cevaplarda açıklanan yöntemlere yönelik motivasyonum, Python'u deadsnake'in ppa'sından kurmanın tam bir başarısızlık olduğu. Bu nedenle, yerel bir Python inşa etmenin yolu budur.

Bunu denedikten sonra, varsayılan pip (with sudo apt-get install pip) kurulumuna güvenmenin yeterli olacağını düşündüm . Bu maalesef yanlış. Görünüşe göre, tüm kötü konulardan kısa bir süre alıyordum ve sonunda bir sanal ortam yaratamıyordum.

Bu nedenle, son derece tavsiye lokal olarak pip yüklemek ile wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py && python get-pip.py --user. Bu ilgili soru bana bu ipucu verdi.

Şimdi bu işe yaramazsa, libssl-devUbuntu için veya openssl-devCentOS için kurulu olduğundan emin olun . Bunları apt-getveya ile yükleyin yumve ardından Python'u yeniden oluşturun (zaten kuruluysa hiçbir şeyi kaldırmaya gerek yoktur, bunu en üstte yapın). get-pipbundan şikayet ederse, bunu import sslbir py shell'de çalıştırarak kontrol edebilirsiniz .

Son, beyan etmeyi unutmayın .local/binve yerel piton yoluna, kontrol which pipve which python.


1

Pyenv ile tam rehber

Pyenv kurulu değilse pyenv-installer ile kurun :

$ curl https://pyenv.run | bash

Herhangi bir özel python sürümünü 3.5.6kullanmak için , örneğin aşağıdakileri kullanın:

pyenv install 3.5.6
pyenv virtualenv 3.5.6 name_of_your_env
pyenv activate name_of_your_env


0

Uygun bir cevap bulamadım, işte burada @toszter cevabına dayanan, ancak Python sistemini kullanmayan (ve birçok şeyle uğraşırken sistem düzeyinde kurulum araçlarını ve virtualenv'i kurmanın her zaman iyi bir fikir olmadığını biliyor olabilirsiniz. Python yapılandırmaları):

#!/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"

Buradaki tavuk-yumurta problemini kırmanın püf noktası, kurulum araçları olmadan virtualenv yapmaktır, aksi takdirde başarısız olur (pip bulunamaz). Direkt olarak pip / wheel kurmak mümkün olabilir, ama bir şekilde easy_install aklıma gelen ilk şeydi. Ayrıca, komut dosyası somut sürümleri çarpanlarına ayırarak geliştirilebilir.

NB. Komut dosyasında xz kullanılması.


0

Her şeyden önce, harika cevap için DTing'e teşekkürler. Oldukça mükemmel.

Paylaşılan barındırmada GCC erişimine sahip olmamaktan muzdarip olanlar için, Scott Stafford'un bahsettiği gibi normal python yerine Go for ActivePython. İşte bunun için komutlar.

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

Size python dizininin yolunu soracaktır. Giriş

../../.localpython

DTing'in cevabında yukarıdaki Adım 1 olarak değiştirin ve bundan sonra Adım 2'ye geçin. ActivePython paket URL'sinin yeni sürümle değişebileceğini lütfen unutmayın. Her zaman buradan yeni URL alabilirsiniz: http://www.activestate.com/activepython/downloads

URL'ye bağlı olarak, alınan dosyaya göre tar ve cd komutunun adını değiştirmeniz gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.