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
cevap
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
Bu soruyu unutmuştum, ancak bunu tam olarak yaptım. –
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.
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.
Evet, bunun daha iyi bir yol olduğuna katılıyorum. Yine de birkaç yıl önce müsait olmadığından eminim. –
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
İlgili: [virtualenv kullanarak belirli paketlerin yüklenmesi] (http://stackoverflow.com/questions/434407/) –