Saya hanya akan menghindari penggunaan virtualenv
after Python3.3 + dan sebagai gantinya menggunakan pustaka yang dikirimkan standar venv
. Untuk membuat lingkungan virtual baru, Anda harus mengetik:
$ python3 -m venv <MYVENV>
virtualenv
mencoba untuk menyalin biner Python ke direktori bin lingkungan virtual. Namun itu tidak memperbarui tautan file perpustakaan yang disematkan ke biner itu, jadi jika Anda membangun Python dari sumber ke direktori non-sistem dengan nama jalur relatif, biner Python rusak. Karena ini adalah cara Anda membuat salinan Python yang dapat didistribusikan, ini adalah kelemahan besar. BTW untuk memeriksa tautan file perpustakaan tertanam pada OS X, gunakan otool
. Misalnya dari dalam lingkungan virtual Anda, ketik:
$ otool -L bin/python
python:
@executable_path/../Python (compatibility version 3.4.0, current version 3.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
Akibatnya saya akan menghindari virtualenvwrapper
dan pipenv
. pyvenv
sudah ditinggalkan. pyenv
tampaknya sering digunakan di mana virtualenv
digunakan tetapi saya akan tinggal jauh dari itu juga karena saya pikir venv
juga melakukan apa pyenv
yang dibangun.
venv
menciptakan lingkungan virtual di shell yang segar dan kotak pasir , dengan pustaka yang dapat diinstal pengguna , dan multi-python aman . Segar karena lingkungan virtual hanya dimulai dengan pustaka standar yang dikirimkan dengan python, Anda harus menginstal pustaka lain lagi pip install
saat lingkungan virtual aktif. Di-sandbox karena tidak ada instalasi pustaka baru ini yang terlihat di luar lingkungan virtual, sehingga Anda dapat menghapus seluruh lingkungan dan memulai lagi tanpa khawatir akan memengaruhi pemasangan pangkalan python Anda. Pustaka yang dapat diinstal pengguna karena folder target lingkungan virtual dibuat tanpasudo
di beberapa direktori yang sudah Anda miliki, jadi Anda tidak perlu sudo
izin untuk menginstal perpustakaan ke dalamnya. Akhirnya aman multi-python , karena ketika lingkungan virtual aktif, shell hanya melihat versi python (3.4, 3.5 dll) yang digunakan untuk membangun lingkungan virtual itu.
pyenv
mirip dengan venv
yang memungkinkan Anda mengelola beberapa lingkungan python. Namun dengan pyenv
Anda tidak dapat dengan mudah mengembalikan pemasangan pustaka ke beberapa keadaan awal dan Anda mungkin akan memerlukan admin
hak di beberapa titik untuk memperbarui perpustakaan. Jadi saya pikir ini juga yang terbaik untuk digunakan venv
.
Dalam beberapa tahun terakhir saya telah menemukan banyak masalah dalam sistem build (paket emacs, pembangun aplikasi python mandiri, installer ...) yang akhirnya bermuara pada masalah virtualenv
. Saya pikir python akan menjadi platform yang lebih baik ketika kita menghilangkan opsi tambahan ini dan hanya menggunakan venv
.