pipenv
Tavşan deliğine indim ( gerçekten derin ve karanlık bir delik ... ) ve son cevap 2 yıldan fazla olduğu için, tartışmayı Python sanal zarflar konusundaki en son gelişmelerle güncellemenin yararlı olduğunu düşündüm buldum.
YASAL UYARI:
Bu cevap, zarf çözümleri olarak pipenv ve venv'in esası hakkındaki tartışmalara devam etmekle ilgili DEĞİLDİR - Ben de hiçbirini onaylamıyorum . Yaklaşık var PyPA gelecekteki gelişimi çelişkili standartlarını onaylayan ve nasıl Virtualenv bir yapım olumsuzladığı için vaat ya / ya hiç aralarındaki seçim. Bu iki araca tam olarak odaklandım, çünkü bunlar PyPA tarafından görevlendirilmiş olanlar .
venv
OP'nin belirttiği gibi, venv ortamları sanallaştırmak için bir araçtır. DEĞİL üçüncü şahıs çözüm, ancak yerli bir araç. PyPA Onayladı venv oluşturmak için SANAL ENVELOPES : " sürüm 3.5 Değişen: venv kullanımı artık sanal ortamlar oluşturmak için tavsiye edilir ".
pipenv
pipenv - gibi venv - ayrıca sanal zarfları ama rulolar-paket yönetimi ve oluşturmak için kullanılabilecek açığı denetimi işlevselliği. Bunun yerine kullanmanınrequirements.txt
,pipenv
aracılığıyla paket yönetimi sunar Pipfile . As PyPA için Onayladı pipenv PAKETİ YÖNETİMİ , ima etmek gibi görünüyorpipfile
yerini etmektirrequirements.txt
.
ANCAK : pipenv kullandığı VIRTUALENV , sanal zarf oluşturmak için kendi araç olarak değil venv tarafından kabul edildiği PyPA sanal zarf oluşturmak yöneldiği bir araç olarak.
Çelişen Standartlar:
Dolayısıyla, sanal bir zarf çözümüne yerleşmek yeterince zor değilse, şimdi farklı sanal zarf çözümleri kullanan iki farklı aracı destekleyen PyPA'mız var . Bu çatışmayı vurgulayan venv vs virtualenv hakkındaki azgın Github tartışmasını burada bulabilirsiniz .
Çatışma çözümü:
Yukarıdaki bağlantıyı başvurulan Github tartışma yönlendirilmiş sahiptir Virtualenv kapasiteli yönünde gelişmesini venv içinde gelecek sürümleri :
yerleşik venv'i tercih edin: hedef python'un venv'i varsa, bunu kullanarak ortamı yaratacağız (ve daha sonra sunduğumuz diğer garantileri kolaylaştırmak için daha sonra işlemler yapacağız)
Sonuç:
Bu nedenle, iki rakip sanal zarf çözümü arasında gelecekteki bir yakınlaşma olacak gibi görünüyor, ancak şu andan itibaren pipenv - hangi kullanıyor virtualenv
- önemli ölçüde değişiyor venv
.
Pipenv'in çözdüğü sorunlar ve PyPA'nın nimetini verdiği gerçeği göz önüne alındığında , parlak bir geleceği var gibi görünüyor . Ve virtualenv önerilen geliştirme hedeflerini yerine getirirse , sanal bir zarf çözümü seçmek artık pipenv VEYA venv için bir durum olmamalıdır .