2010-05-04 16 views
16

Genellikle daha fazla yalıtım için --no-site-pack seçeneğiyle virtualenvs oluşturmayı tercih ediyorum ve ayrıca varsayılan python global paketleri içerdiği için Oldukça çok paket ve çoğu çoğu zaman gerekli değildir. Yine de, PIL veya psycopg2 gibi global olarak birkaç paket seçmek istiyorum. Bunları sanal makineye dahil etmenin iyi bir yolu var mı, bu da kolayca otomatikleştirilebilir mi?--no-site-pack ile oluşturulmuş bir virtualenv'e global paket dahil

+0

İlgili: [virtualenv kullanarak belirli paketlerin yüklenmesi] (http://stackoverflow.com/questions/434407/) –

cevap

11

virtualenvwrapper kullanıyorsanız ve yeni sanalenv sitepackages dizininde otomatik olarak sembolik bağlantılar oluşturmak için postmkvirtualenv komut dosyasını kullanabilirsiniz.

#!/bin/sh 
cdsitepackages 
ln -s /path/to/system/site-packages/package-name 
cdvirtualenv 
+0

Bu soruyu unutmuştum, ancak bunu tam olarak yaptım. –

0

Bunu aslında bu özel paketlerle denemedim, ancak global site paketlerinden virtualenv'in site paketlerine basit bir bağlantı bağlantısının işe yarayacağını tahmin edebilirim ve bu kolayca betimlenebilir.

8

Eğer virtualenvwrapper kullanıyorsanız, kabuk komut add2virtualenv aktif virtualenv bulunmalıdır. Kullanın:

add2virtualenv /path/to/package 

sizin Virtualenv site paketlerinde PTH dosyasına _virtualenv_path_extensions.pth bir giriş ekleyin.

Add2virtualenv'i kullanarak, kendinizinkini oluşturmak yerine, PTH dosyasındaki satırını yorumlayarak paketin içe aktarılabilir olmasını kaldırabilirsiniz. Bu, kodunuzun geçerliliğini, bağlı olduğu bir kitaplığın çeşitli sürümlerine karşı kontrol etmenizi kolaylaştırır.

+0

Evet, bunun daha iyi bir yol olduğuna katılıyorum. Yine de birkaç yıl önce müsait olmadığından eminim. –

+0

Muhtemelen mevcut değildi. Ben kesinlikle böyle küçük yararlı şeyler için virtualenvwrapper büyük bir hayranıyım. Tabii ki kendi PTH dosyanızı yazarak el ile de yapabilirsiniz. – pcurry