virtualenvmemungkinkan Anda untuk membuat instalasi Python khusus misalnya dalam subdirektori proyek Anda. Setiap proyek Anda dengan demikian dapat memiliki sendiri python(atau bahkan beberapa) di bawah virtualenv masing-masing. Tidak masalah bagi beberapa / semua virtualenvs untuk bahkan memiliki versi yang sama python(misalnya 2.7.16) tanpa konflik - mereka hidup secara terpisah dan tidak saling mengenal. Jika Anda ingin menggunakan salah satu dari pythonitu, Anda harus melakukannya activate(dengan menjalankan skrip yang akan sementara memodifikasi Anda PATHuntuk memastikan bahwa bin/direktori virtualenv yang lebih dulu). Dari titik itu, panggilan python(atau pipdll.) Akan memanggil versi virtualenv sampai Anda deactivate(yang mengembalikan PATH).
pyenvberoperasi pada skala yang lebih luas daripada virtualenv- ia menyimpan daftar instalasi Python (dan dapat digunakan untuk menginstal yang baru) dan memungkinkan Anda untuk mengonfigurasi versi Python mana yang akan dijalankan ketika Anda menggunakan pythonperintah. Kedengarannya mirip tetapi penggunaan praktis agak berbeda. Ia bekerja dengan menambahkan pythonskrip shim ke Anda PATH(secara permanen) dan kemudian memutuskan mana yang "nyata" pythonuntuk dipanggil. Anda bahkan dapat mengkonfigurasi pyenv untuk memanggil salah satu python virtualenv Anda (dengan menggunakan pyenv-virtualenvplugin). Versi Python yang Anda instal menggunakan pyenvgo ke $(pyenv root)/versions/direktori (secara default, root pyenv adalah ~ / .pyenv) jadi lebih 'global' daripada virtualenv. Biasanya, Anda tidak dapat menduplikasi versi Python yang diinstal melalui pyenv, setidaknya melakukannya bukan ide utama.
Untuk membuat virtualenv dengan versi Python tertentu, Anda perlu memiliki versi itu di suatu tempat di sistem Anda (apakah itu pada PATHatau tidak) dan pada dasarnya mengkloningnya ke dalam virtualenv yang baru dibuat. Tentu saja, salah satu cara untuk mendapatkan versi tertentu adalah menginstalnya melalui pyenv. Setelah selesai, masing-masing virtualvv bebas untuk menyimpang dengan memasang modul (atau versi) yang berbeda ke dalamnya.
Pendeknya:
virtualenv memungkinkan Anda untuk membuat instalasi python lokal dan independen dengan mengkloning dari yang sudah ada
pyenv memungkinkan Anda untuk menginstal berbagai versi python secara bersamaan (baik di seluruh sistem atau hanya untuk pengguna lokal) dan kemudian memilih yang mana dari banyak ular sanca untuk dijalankan pada waktu tertentu (termasuk yang dibuat oleh virtualenv atau Anaconda)