Virtualenv: aktifkan.sh gagal jika opsi 'nounset' disetel

Dibuat pada 7 Jul 2011  ·  24Komentar  ·  Sumber: pypa/virtualenv

Saya mendapatkan kesalahan berikut ketika saya mencoba mengaktifkan virtualenv.

$ source test-env/bin/activate
-bash: _OLD_VIRTUAL_PATH: unbound variable

Ini terjadi karena saya telah mengonfigurasi Bash untuk menggunakan opsi _nounset_, yang menimbulkan kesalahan saat mengakses variabel yang tidak disetel (lihat di sini )

Komentar yang paling membantu

Solusi untuk saat ini—

set -o nounset

[...]

set +o nounset
. ~/.env/bin/activate
set -o nounset

[...]

Semua 24 komentar

Saya dapat memperbaikinya dengan mengubah baris ini:
if [ -n "$OLD_VIRTUAL_PATH" ] ; then
ke:
if [ -n "${_OLD_VIRTUAL_PATH=''}" ] ; then
Konstruk ${VAR=DEFAULT} mengembalikan VAR jika disetel, dan DEFAULT jika tidak (lihat halaman ini . Kami kemudian dapat menggunakan string kosong sebagai default, menyebabkan perilaku yang diharapkan. Ini sedikit kurang dapat dibaca daripada yang saya inginkan, tapi itu triknya.

Sebenarnya, itu adalah perbaikan yang lemah, karena memerlukan penulisan ulang semua tes eksistensial. Jauh lebih mudah untuk menambahkan set -o nounset ke bagian atas skrip.

Saya memukul ini juga.

gerakan mengungkap kekerasan seksual demi menghapuskannya

Saya menduga bahwa mungkin cara untuk menghapus -u untuk bagian dalam skrip, dan kemudian mengembalikannya ke pengaturan asli saat menyelesaikan akan masuk akal.

Saya mencoba mencari cara untuk melakukannya di sini - http://stackoverflow.com/questions/13494841/how-can-you-ask-bash-for-the-current-options

saya akan melakukan:

if [ -n "$OLD_VIRTUAL_PATH" ] ; then

ke:

if [ -n "${_OLD_VIRTUAL_PATH-}" ] ; then
${var-DEFAULT}  If var not set, evaluate expression as $DEFAULT *

Yup, tekan saja ini sendiri.

Menjalankan virtualenv==1.11.4 .

Solusi untuk saat ini—

set -o nounset

[...]

set +o nounset
. ~/.env/bin/activate
set -o nounset

[...]

Ini mungkin diperbaiki dengan https://github.com/pypa/virtualenv/pull/723 , yang menggunakan if ! [ -z "${_OLD_VIRTUAL_PATH+x}" ] ; then .

Harap dicatat bahwa $_OLD_VIRTUAL_PATH itu sendiri dimaksudkan untuk dihapus di #722 sekalipun. Tapi #723 memperbaikinya untuk vars lainnya juga.

:+1:

saya juga kena ini....

Agak aneh bahwa masalah yang begitu mudah tidak diperbaiki setelah empat tahun.
pekerjaan beaumartinez adalah yang paling sederhana untuk saat ini.

Ini diperbaiki oleh #645.

Tetap

@dstufft dapatkah Anda menentukan rilis mana yang diperbaiki sehingga kami dapat memastikan bahwa kami telah menginstal versi minimal yang dibutuhkan? Dari bug tidak jelas sama sekali mengenai rilis mana yang termasuk perbaikannya.

@ssbarnea Itu diperbaiki pada 12 Agustus 2015, seperti yang disebutkan dalam komentar di atas, jadi versi apa pun yang dirilis setelah tanggal itu. Dari https://virtualenv.pypa.io/en/latest/changes/ itu berarti 13.1.1 (dan memang catatan untuk versi itu menyebutkan perubahan ini secara khusus). Semua informasi itu tersedia dengan mudah, jadi Anda mungkin bisa menemukannya dengan pencarian singkat (itulah yang saya lakukan).

Saya punya kabar buruk: bug ini harus dibuka kembali karena sekarang saya mendapatkan activate: line 13: _OLD_VIRTUAL_PYTHONHOME: unbound variable dan saat memperbaikinya, saya pikir penting untuk memperkenalkan tes yang mencoba mengaktifkan lingkungan virtual menggunakan bash ketat

Ini juga berlaku untuk line 22: ZSH_VERSION: unbound variable ... dan bertanya-tanya berapa lama daftarnya akan berjalan... baris perintah solusi saya mulai terlihat sesat:

PS1="${{PS1:-}}" _OLD_VIRTUAL_PATH="${{_OLD_VIRTUAL_PATH:-}}" _OLD_VIRTUAL_PYTHONHOME="${{_OLD_VIRTUAL_PYTHONHOME:-}}" source "$VENV/bin/activate"

Anda tentu saja dapat mengatur lingkungan sendiri, atau menggunakan nama path lengkap dari Python yang dapat dieksekusi.

Maaf untuk membuka kembali diskusi tentang ini, saya membuat kesalahan dengan tidak memeriksa versi virtualenv yang kami miliki di server build dan saya membuat penemuan yang buruk, versi kuno 1.10.1. Ini akan dihitung untuk banyak bug. Saya akan mengupgradenya besok.

Tidak perlu meminta maaf; Sebenarnya saya belajar beberapa hal dari ini dihidupkan kembali
percakapan.

Pada Sel, 7 Mar 2017 jam 15:09, Sorin Sbarnea [email protected]
menulis:

Maaf untuk membuka kembali diskusi tentang ini, saya membuat kesalahan dengan tidak
memeriksa versi virtualenv yang kami miliki di server build dan saya
membuat penemuan jelek, versi kuno 1.10.1. Ini akan dihitung untuk
banyak bug. Saya akan mengupgradenya besok.


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/pypa/virtualenv/issues/150#issuecomment-284859700 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AAFWbGU02kdSoecXUESrDHlOUN9Rci5Oks5rjcdvgaJpZM4AQ_Js
.

Tampaknya bug masih ada bahkan dalam rilis saat ini, jadi saya mengangkatnya sebagai https://github.com/pypa/virtualenv/issues/1029

Apakah halaman ini membantu?
0 / 5 - 0 peringkat