Saya menggunakan virtualenv dan virtualenvwrapper. Saya dapat beralih di antara virtualenv saja menggunakan workon
perintah.
me@mymachine:~$ workon env1
(env1)me@mymachine:~$ workon env2
(env2)me@mymachine:~$ workon env1
(env1)me@mymachine:~$
Bagaimana cara keluar dari semua mesin virtual dan bekerja di mesin saya yang sebenarnya lagi? Saat ini, satu-satunya cara saya untuk kembali me@mymachine:~$
adalah keluar dari shell dan memulai yang baru. Agak menyebalkan. Apakah ada perintah untuk mengerjakan "tidak ada", dan jika demikian, apa itu? Jika perintah semacam itu tidak ada, bagaimana cara saya membuatnya?
python
virtualenv
virtualenvwrapper
Apreche
sumber
sumber
Jawaban:
Biasanya, mengaktifkan virtualenv memberi Anda fungsi shell bernama:
yang membuat semuanya kembali normal.
Saya baru saja melihat secara khusus pada kode untuk
virtualenvwrapper
, dan, ya, itu juga mendukungdeactivate
sebagai cara untuk melarikan diri dari semua virtualenvs.Jika Anda mencoba untuk meninggalkan lingkungan Anaconda , perintah tergantung pada versi Anda
conda
. Versi terbaru (seperti 4.6) menginstalconda
fungsi langsung di shell Anda, dalam hal ini Anda menjalankan:Versi conda yang lebih lama malah menerapkan penonaktifan menggunakan skrip yang berdiri sendiri:
sumber
virtualenvwrapper
dan mungkin Doug Hellmann akan mempertimbangkannya! Catatan, bagi mereka yang mungkin membaca komentar ini nanti, yangworkon
adalah TIDAK aslivirtualenv
perintah (yang adalah apa pertanyaan awal adalah tentang) tetapivirtualenvwrapper
perintah!Saya mendefinisikan alias , workoff , sebagai kebalikan dari workon :
Mudah diingat:
sumber
.bashrc
?~/.bashrc
Menggunakan:
Jika ini tidak berhasil, coba
Siapa pun yang tahu bagaimana Bash
source
bekerja akan berpikir itu aneh, tetapi beberapa pembungkus / alur kerja di sekitar virtualenv menerapkannya sebagai pelengkap / mitra untuksource activate
. Jarak tempuh Anda mungkin beragam.sumber
deactivate
adalah fungsi yang akan dibuat saat Anda sumberactivate
file. Saran Anda untuk melakukansource deactivate
tidak masuk akal sama sekali, karena tidak ada file bernamadeactivate
Untuk mengaktifkan lingkungan virtual Python:
Untuk menonaktifkan:
sumber
$source activate
$cd /to/dir/i/want/my/virtualenv/installed
itu$virtualenv name_i_want_for_it
kemudian$. name_i_want_for_it/bin/activate
virtualenv masih tampak sedikit off untuk saya. Perlu ditingkatkan ...Saya menemukan bahwa ketika dalam lingkungan Miniconda3 saya harus menjalankan:
Baik
deactivate
atausource deactivate
bekerja untuk saya.sumber
deactivate
adalah untukvirtualenv
, dansource deactivate
untuk conda lama di Linux.conda deactivate
adalah cara lintas platform yang baik untuk conda envs (bukan virtualenvs)Anda dapat menggunakannya
virtualenvwrapper
untuk memudahkan cara Anda bekerjavirtualenv
.Menginstal
virtualenvwrapper
:Jika Anda menggunakan shell standar, buka
~/.bashrc
atau~/.zshrc
jika Anda menggunakan Oh My Zsh . Tambahkan dua baris ini:Untuk mengaktifkan virtualenv yang ada, gunakan perintah
workon
:Untuk menonaktifkan virtualenv Anda:
Inilah tutorial saya , langkah demi langkah tentang cara menginstal virtualenv dan virtualenvwrapper.
sumber
workon
perintahnya, ia berfungsi dari direktori mana pun.deactivate
skrip shell tanpa terlebih dahulu mencari skrip yang mendefinisikan fungsi ini (dalam hal ini Anda tidak akan menemukan perintah itu .. . error)Karena
deactivate
fungsi yang dibuat oleh sumber~/bin/activate
tidak dapat ditemukan dengan cara biasa mencari perintah seperti itu~/bin
, Anda mungkin ingin membuat satu yang hanya menjalankan fungsideactivate
.Masalahnya adalah bahwa skrip bernama
deactivate
berisi perintah tunggaldeactivate
akan menyebabkan loop tanpa akhir jika secara tidak sengaja dieksekusi saat tidak di dalam vv Kesalahan umum.Ini dapat dihindari dengan hanya mengeksekusi
deactivate
jika fungsi ada (yaitu telah dibuat dengan sumberactivate
).sumber
Gunakan
deactivate
.Catatan,
(my_env)
hilang.sumber
Saya menggunakan zsh-autoenv yang didasarkan pada autoenv .
Berikut ini sebuah contoh:
Jadi ketika saya meninggalkan
dtree
direktori, lingkungan virtual secara otomatis keluar."Development tree utiles"
hanyalah sebuah nama ... Tidak ada maksud tersembunyi yang menghubungkan ke Illuminati di sini.sumber
Dengan menggunakan
deactivate
fitur yang disediakan olehactivate
skrip venv, Anda harus memercayai fungsi penonaktifan untuk dikodekan dengan benar untuk mengatur ulang semua variabel lingkungan secara bersih kembali seperti semula — dengan mempertimbangkan tidak hanya aktivasi asli , tetapi juga sakelar , konfigurasi , atau lainnya. pekerjaan yang mungkin telah Anda lakukan untuk sementara waktu.Ini mungkin baik-baik saja, tetapi itu memperkenalkan risiko baru, tanpa nol meninggalkan lingkungan Anda dimodifikasi setelahnya.
Namun, secara teknis tidak mungkin bagi suatu proses untuk secara langsung mengubah variabel lingkungan dari induknya, sehingga kita dapat menggunakan sub-shell terpisah untuk benar-benar yakin bahwa kami
venv
tidak meninggalkan perubahan residual di belakang:Mengaktifkan:
$ bash --init-file PythonVenv/bin/activate
venv
. Kulit asli Andabash
tetap tidak dimodifikasi.Untuk menonaktifkan:
$ exit
ATAU[CTRL]
+[D]
venv
ada, dan menjatuhkan Anda kembali ke shell asli dari sebelum script aktivasi membuat perubahan apa pun pada lingkungan.Contoh:
sumber
Saya memiliki masalah yang sama saat mengerjakan skrip pemasang. Saya melihat apa yang dilakukan bin / activ_this.py dan membaliknya.
Contoh:
Saya tidak yakin 100% jika berfungsi sebagaimana dimaksud. Saya mungkin telah melewatkan sesuatu sepenuhnya.
sumber