Mevcut sanal ortam zarif bir şekilde yükseltilebilir mi?


98

Python 2.5 için oluşturulmuş bir virtualenv'im var ve onu Python 2.6'ya "yükseltmek" istiyorum.

Başlangıçta şu şekilde kuruldu:

virtualenv --no-site-packages -p python2.5 myenv

Şimdi yükseltmek için virtualenv'i aynı dizinde çalıştırıyorum:

virtualenv --no-site-packages -p python2.6 myenv
...
Not overwriting existing python script myenv/bin/python (you must use myenv/bin/python2.6)
...
Overwriting myenv/bin/activate with new content

Varsayılan python hala 2.5'tir, ancak 2.6'yı da belirtebilsem de. 2.5'i tamamen kaldırmanın ve bunun yerine 'bin / python'un 2.6'yı işaret etmenin bir yolu var mı ?

Yanıtlar:


65

Python 2.6 virtualenv'i mevcut dizini "yeniden sanallaştırmak" için kullanabilirsiniz. Yine de kurduğunuz tüm modülleri yeniden kurmanız gerekecektir. Sıklıkla bir modül geliştirmek için sanal bir dizine sahibim ve Python'un birçok sürümüyle aynı dizini sanallaştırıyorum ve gayet iyi çalışıyor. :)


1
Teşekkürler! Yönteminizi denedim ve 'etkinleştir' komut dosyasının güncellendiğini, ancak eski sürümün kaldığını görüyorum (lütfen gözden geçirilmiş soruya bakın). Bir örnek verebilir misiniz?
Matt Norris

13
python 2.6 ile virtualenv'i yeniden çalıştırmadan önce, virtualenv'deki bin / python çalıştırılabilir dosyasını kaldırabilirsiniz.
Carl Meyer

9
Peki, çalışmasını sağlayabilirsin - ama neden? En büyük cazibesi, virtualenvkolay ve ucuz bir şekilde yeniden üretilebilir python ortamları yapmasıdır. Neden biriyle uğraşıp her şeyi düzelttiğinizden ya da yeniden üretebileceğinizden ya da yeni bir temiz ortam hazırlarken üretim ortamınızı rahatsız ettiğinizden neden emin değilsiniz?
Ned Deily

9
@Ned: Virtualenv yeniden üretilebilir ortamlar oluşturmaz, izole ortamlar oluşturur. Bunları yeniden üretmek için her şeyi aynı şekilde kurmanız gerekir, virtualenv bunun için yeterli değildir. zc.buildout orada daha iyidir.
Lennart Regebro

1
@Ned: Alınan nokta; bu, içinde çalıştığım bir geliştirme ortamı. Kesinlikle 2.6 yapmam gerekmedikçe, 2.5'te tutmak istedim. Bu ihtiyaç ortaya çıktı, bu yüzden, dizinleri yeniden oluşturup yeni ortamlara kopyalamak / yapıştırmak zorunda kalmadan kodunuz üzerindeki etkileri görmek için yalıtılmış bir ortamı yükseltip yükseltemeyeceğinizi merak ettim.
Matt Norris

27

Python 3.3+ venv desteklerinde - yükseltme bayrağı

  --upgrade             Upgrade the environment directory to use this version
                        of Python, assuming Python has been upgraded in-place.

Kullanım:

python -m venv --upgrade YOUR_VENV_DIRECTORY

Birkaç projede herhangi bir sorun olmadan venv'mi Python 3.7.x'ten 3.8'e yükselttim.


1
"varsayarak Python yerinde yükseltildi" ... Bu ne yazık ki benim sistem eğer anlamına görünüyor python33.6 puan, i olsun oluşturamaz python3benim venv içinde 3.7 noktaya
Joel

4

Yeni bir virtualenvkullanarak oluşturmalı python2.6ve daha sonra, yeni env'yi etkinleştirdikten sonra, ihtiyaç duyduğunuz site paketlerinin yeni sürümlerini kurmak için kendi python2.6ve bunun özelliklerini kullanmalısınız easy_install. Adresine giden yol adının virtualenvortamdaki çeşitli dosyalara bağlı olduğuna dikkat edin , bu nedenle, ona geçmeye hazır olduğunuzda, yeni virualenvyola başvurmak için başlangıç ​​komut dosyalarınızı ve diğerlerini değiştirin ya da eski dizin ve içindeki yol adlarının değiştirilmesi.


3

CentOS'a ikinci bir Python yükleyin

  1. python'u indir
  2. yerel fark için yükle

    configure --prefix=/opt/virtualenv/python 
    make && make install
    
  3. yeni python kullanarak sanal ortam oluştur

    virtualenv /opt/virtualenv --python=/opt/python276/bin/python
    

    not: Gerekirse farklı bir kullanıcıyla yapılabilir

    chown pyuser -R /opt/virtualenv
    su - pyuser
    source /opt/virtualenv/bin/activate
    python -v
    
  4. Sanal ortam oluştur:

    virtualenv /opt/virtualenv
    su - infograficos
    source bin/activate
    
  5. Pip'i python 2.7 ile kurun (virtualenv içinde)

    easy_install pip 
    

0

Eğer OS X kullanıyorsanız, deneyin bu Reşit-artmış sürümü (örneğin 2.7.6 2.7.8 kadar) tutarken, üçüncü taraf kitaplıkları çalışmak Python yükseltmek istiyorum.

Benim için Django'nun kurulu olduğu 5 farklı sanal ortamda çalışıyor.

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.