Virtualenv: يفشل activ.sh إذا تم تعيين خيار "nounset"

تم إنشاؤها على ٧ يوليو ٢٠١١  ·  24تعليقات  ·  مصدر: pypa/virtualenv

أحصل على الخطأ التالي عندما أحاول تنشيط virtualenv.

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

يحدث هذا لأنني قمت بتكوين Bash لاستخدام الخيار _nounset_ ، والذي يتسبب في حدوث خطأ عند الوصول إلى متغيرات غير محددة (انظر هنا )

التعليق الأكثر فائدة

الحل الآن—

set -o nounset

[...]

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

[...]

ال 24 كومينتر

يمكنني إصلاح هذا عن طريق تغيير هذا الخط:
if [ -n "$OLD_VIRTUAL_PATH" ] ; then
ل:
if [ -n "${_OLD_VIRTUAL_PATH=''}" ] ; then
يُرجع بناء $ {VAR = DEFAULT} VAR إذا تم تعيينه ، و DEFAULT إذا لم يكن كذلك (انظر هذه الصفحة . يمكننا بعد ذلك استخدام السلسلة الفارغة كإعداد افتراضي ، مما يتسبب في السلوك المتوقع. إنها أقل قابلية للقراءة مما أريد ، لكنها تفعل الحيلة.

في الواقع ، هذا إصلاح ضعيف ، لأنه يتطلب إعادة كتابة جميع الاختبارات الوجودية. من الأسهل بكثير إضافة set -o nounset إلى الجزء العلوي من البرنامج النصي.

لقد ضربت هذا أيضا.

أنا أيضا

أظن أنه ربما تكون هناك طريقة لإلغاء ضبط the -u لأجزاء داخلية من النص ، ومن ثم جعله يستعيد الإعداد الأصلي عندما يكون الإنهاء منطقيًا.

أحاول اكتشاف طريقة للقيام بذلك هنا - http://stackoverflow.com/questions/13494841/how-can-you-ask-bash-for-the-current-options

تم تقديم طلب سحب - https://github.com/pypa/virtualenv/pull/357

أود أن تفعل:

if [ -n "$OLD_VIRTUAL_PATH" ] ; then

ل:

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

نعم ، فقط ضرب هذا بنفسي.

تشغيل virtualenv==1.11.4 .

الحل الآن—

set -o nounset

[...]

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

[...]

يمكن إصلاح ذلك من خلال https://github.com/pypa/virtualenv/pull/723 ، والذي يستخدم if ! [ -z "${_OLD_VIRTUAL_PATH+x}" ] ; then .

يرجى ملاحظة أن $_OLD_VIRTUAL_PATH نفسه من المفترض إزالته في # 722 بالرغم من ذلك. لكن # 723 يصلحها مع vars الأخرى أيضًا.

: +1:

أنا أضرب هذا أيضًا ...

من الغريب نوعًا ما أن هذه المشكلة السهلة لم يتم حلها بعد أربع سنوات.
تعد طريقة عمل beaumartinez أبسط طريقة في الوقت الحالي.

تم إصلاح هذا بواسطة # 645.

مثبت

dstufft هل يمكنك تحديد الإصدار الذي تم إصلاح هذا فيه حتى نتمكن من التأكد من تثبيت الإصدار الأدنى المطلوب؟ من الخطأ ليس واضحًا على الإطلاق فيما يتعلق بالإصدار الذي يتضمن الإصلاح.

ssbarnea تم إصلاحه في 12 أغسطس 2015 ، كما هو مذكور في التعليقات أعلاه ، لذلك تم إصدار أي إصدار بعد ذلك التاريخ. من https://virtualenv.pypa.io/en/latest/changes/ هذا يعني 13.1.1 (وفي الواقع تشير الملاحظة الخاصة بهذا الإصدار إلى هذا التغيير على وجه التحديد). كل هذه المعلومات متاحة بسهولة ، لذا ربما يمكنك العثور عليها ببحث موجز (هذا ما فعلته).

لدي بعض الأخبار السيئة: يجب إعادة فتح هذا الخطأ لأنني الآن أحصل على activate: line 13: _OLD_VIRTUAL_PYTHONHOME: unbound variable وأثناء إصلاح هذا أعتقد أنه من الضروري تقديم اختبار يحاول تنشيط البيئة الافتراضية باستخدام bash صارم

ينطبق هذا أيضًا على line 22: ZSH_VERSION: unbound variable ... وأتساءل عن المدة التي ستستغرقها القائمة ... يبدأ سطر أوامر الحل البديل في الظهور بشكل منحرف:

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

يمكنك بالطبع إعداد البيئة بنفسك ، أو استخدام اسم المسار الكامل لملف Python القابل للتنفيذ.

آسف لإعادة فتح المناقشة حول هذا ، لقد ارتكبت خطأ عدم التحقق من إصدارات Virtualenv التي كانت لدينا على خادم الإنشاء وقمت باكتشاف قبيح ، إصدار قديم 1.10.1. هذا من شأنه أن يعول على الكثير من الأخطاء. سأقوم بترقيته غدا.

لا داعي للاعتذار. في الواقع لقد تعلمت بعض الأشياء من هذا إحياء
محادثة.

يوم الثلاثاء ، 7 مارس ، 2017 الساعة 3:09 مساءً ، سورين سبارنا إخطارات @github.com
كتب:

آسف لإعادة فتح المناقشة حول هذا ، لقد ارتكبت خطأ لا
التحقق من إصدارات Virtualenv التي كانت لدينا على خادم الإنشاء وأنا
قام باكتشاف قبيح ، نسخة قديمة 1.10.1. هذا من شأنه أن يعول عليه
الكثير من البق. سأقوم بترقيته غدا.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/pypa/virtualenv/issues/150#issuecomment-284859700 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AAFWbGU02kdSoecXUESrDHlOUN9Rci5Oks5rjcdvgaJpZM4AQ_Js
.

يبدو أن الخطأ لا يزال موجودًا حتى في الإصدار الحالي ، لذلك قمت برفعه على هذا النحو https://github.com/pypa/virtualenv/issues/1029

تم إصلاحه الآن https://github.com/pypa/virtualenv/pull/922

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات