2016-03-02 18 views
6

Farklı Django web sitelerini çalıştıran ve farklı Django sürümlerini çalıştıran bir sunucum var. Dün, Django issued security updates for 1.8 and 1.9. Bu, her şeyin güvenliğini sağlamak için her bir web sitesine gitmem ve Django'nun çalışmakta olan sürümünü güncellemem gerektiğini gösterir.VirtualEnv ile Merkezileştirilmiş Django Kurulumu

Django, sürüm oluşturma ile çok iyi bir iş yaptığından (yani, 1.9.2-1.9.4 gibi sürümler arasında 1.8-1.9 gibi küçük sürümler arasında kırılma değişiklikleri gerçekleşir), bunu yapabilmem mümkün gibi görünüyor Her bir küçük sürüm için 1,7, 1,8, 1,9 vb. merkezi bir Django kurulumuna sahip olunuz.

VirtualEnv'i belirli bir yüklemeyi hedeflemenin bir yolu var mı? Böylece, Django 1.8 noktasını çalıştıran tüm web sitelerini tek bir yüklemede çalıştırabilirim ve aynı şekilde 1.9 için?

cevap

2

Tek çözüm, virtualenvwrapper'dan add2virtualenv'u kullanmaktır.

Basitçe, (tabii ki tek django sürümde bir Virtualenv) ve virtualenvs her birinde komutu çağırmak paylaşılan django sürümleri için bazı virtualenvs oluşturun: Paylaşılan virtualenv (ve piton sürümüne eğer yolunu değiştirerek

add2virtualenv /path/to/shared/virtualenv/lib/python3.4/site-packages 

Gerekli) kullanmak istediğiniz ile.

add2virtualenv kalıcı bir etkiye sahiptir, bu yüzden virtualenvwrapper'ı etkinleştirdikten sonra tekrar çağırmaya gerek yoktur.

+0

İşlev, virtualenvwrapper'ın dışında kullanılabilir mi? İçeride olduğu gibi, hangi virtualenv'ın kullanıma sunulduğu ile yapılabilir mi? – tghw

+0

Evet, bu yapılabilir, virtualenvwrapper sanalenvinizin 'site-packages' dir'inde' _virtualenv_path_extensions.pth' dosyasını oluşturarak, 'sys.path' içine belirtilen dizinleri ekliyor. Virtualenvwrapper'da tam olarak nasıl yapıldığını analiz ederek, bunu kesinlikle yeniden oluşturabileceksiniz. Ama virtualenvwrapper kullanmak daha kolay olacaktır. – GwynBleidD

+0

Bir çekicilik gibi çalıştık, teşekkürler! – tghw

1

alabilir bir yaklaşım, site paketleri dizinindeki symlink django'dur. Gerçi bu her çeşit taslak gibi görünüyor.

Kendim gelince? 'u yükledim çünkü manage virtualenvs with it

+0

Symlink çözümünü bir kez denedim ve bu kötü bir fikir çünkü diğer bağımlılıkları manuel olarak avlamanız gerekiyor. Benim için çalışılan, virtualenv'in eksik olduğu bazı özelliklere sahip olan virtualenvwrapper'tı. Bu senaryoda, iki sanalenv (Django 1.8, Django 1.9, virutalenv tarafından yönetilen bağımlılıkları ile) alabilir ve her proje için yeni sanal alanlar oluşturabilir ve gerektiğinde Django 1.8 ya da Django 1.9 virtualenv'e bağlantı kurabilirim. Özellikle add2virtualenv komutuna bakın: http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html#add2virtualenv –

+0

@DRubio Belirli versoni yeniden yüklemeyi denediğinizde pip bağımlılıkları kaldırmaz mı? –

+0

@WayneWerner Eğer Django'yu simgeleyecekseniz, Django'nun tüm bağımlılıklarını da bağlamanız gerekir. Pip'in, tüm symlinlerin yapılmadığını bilmenin bir yolu olmazdı. – tghw

-2

Bu ne değildir? Django sürümünü "> = 1.8, < 1.9" olarak belirtebilirsiniz, daha sonra yükseltme işleminin her zaman en son 1.8 hata düzeltme sürümünü yükleyeceğini, ancak hiçbir zaman 1.9 olmadığını bileceksiniz.

+0

Sorunun sorduğu şey bu değil. Şu anda, bir site kurmak -U "django> = 1,8, <1,9" bir pip yapmak için X sitelerim var. Soru, tüm X sitelerinin kullandığı tek bir merkezi Django 1.8 kurulumunun nasıl yapıldığını sormaktır. – tghw

İlgili konular