<p>pipenv لا يحترم Virtualenv المنشط الحالي ويخلق بيئة جديدة</p>

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

لست متأكدًا مما إذا كان هذا سلوكًا متوقعًا ، ولكن من منظور الاستخدام ، يبدو أن هذا خطأ:

مشكلة:

pipenv install <package_name> بإنشاء Virtualenv جديد على الرغم من تنشيط virtualenv باستخدام pipenv shell .

متى تحدث:

إذا لم نكن في نفس الدليل حيث يوجد Pipfile .

صِف بيئتك

  1. نوع نظام التشغيل: Linux (Ubuntu 16.04)
  2. إصدار Python: $ python -V == 3.6.3
  3. إصدار Pipenv: $ pipenv --version == الإصدار 8.3.1

نتيجة متوقعة

إذا كنا في shell virtualenv مفعَّلة ، (بغض النظر عن pwd ) ، يجب أن يحترم pipenv install ذلك وأن نحدِّث Pipfile بشكل صحيح ويجب ألا ننشئ Pipfile جديدًا

نتيجة فعلية

يتم إنشاء ملف Pipfile جديد ، حتى لو كان في نفس Virtualenv المنشط ولكن في دليل مختلف.

خطوات التكرار

$ mkdir -p testproject/app
$ cd  testproject/app
$ pipenv install flask
$ pipenv shell # environment gets activated here
$ <my_new_environment>$  cd ..  # Now we are inside testproject
$ pipenv install requests
$ New Pipfile gets created here

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

erinxocon وهنا تكمن المشكلة: يتوقع المستخدمون أن تكون pipenv بديلاً للنقطة.

kennethreitz قال ذلك بنفسه على صفحة pipenv الرئيسية:

لم تعد بحاجة إلى استخدام pip و virtualenv بشكل منفصل. يعملون معا.

من المفترض أن لا يقوم pipenv فقط بإنشاء Virtualenv ، كما قلت ، ولكن أيضًا إدارته . مرة أخرى ، تم ذكره صراحةً في الصفحة الرئيسية (التركيز لي):

يقوم تلقائيًا بإنشاء وإدارة Virtualenv لمشاريعك ، بالإضافة إلى إضافة / إزالة الحزم من ملف Pipfile أثناء تثبيت / إلغاء تثبيت الحزم.

في الأيام الخوالي ، عندما استخدمنا virtualenv و pip بشكل منفصل ، كان بإمكاننا الانتقال إلى أي دليل و pip install ، وسيتم تثبيت الحزمة بشكل صحيح في Virtualenv ، حقيقة أن pipenv لا تفعل ذلك _ في حين أن pipenv - يتم تنشيط virtualenv المُدارة _ يكسر توقعات المستخدم.

ال 3 كومينتر

مرحباansrivas! هذا ليس التدفق المقصود لـ pipenv. سيستخدم Pipenv بيئة افتراضية إذا وجد نفسه في واحدة في البداية ولكن ليس في جميع المكالمات اللاحقة. سيكون لديك عش مشعر إلى حد ما من Virtualenvs! إذا انتقلت إلى مجلد خارج المشروع ، فسيقوم pipenv بإنشاء ملف pipfile جديد. إذا كنت ترغب فقط في تثبيت بعض الحزم خارج المجلد ، ولكن داخل بيئة virutalenvironment التي قمت بتنشيطها في المجموعة الفرعية ، يمكنك عمل pipenv shell ثم pip install requests . يمكن استخدام Pipenv لإنشاء نموذج افتراضي لمشروعك ، ولكنه في حد ذاته ليس مديرًا افتراضيًا ، إنه مدير مشروع.

erinxocon وهنا تكمن المشكلة: يتوقع المستخدمون أن تكون pipenv بديلاً للنقطة.

kennethreitz قال ذلك بنفسه على صفحة pipenv الرئيسية:

لم تعد بحاجة إلى استخدام pip و virtualenv بشكل منفصل. يعملون معا.

من المفترض أن لا يقوم pipenv فقط بإنشاء Virtualenv ، كما قلت ، ولكن أيضًا إدارته . مرة أخرى ، تم ذكره صراحةً في الصفحة الرئيسية (التركيز لي):

يقوم تلقائيًا بإنشاء وإدارة Virtualenv لمشاريعك ، بالإضافة إلى إضافة / إزالة الحزم من ملف Pipfile أثناء تثبيت / إلغاء تثبيت الحزم.

في الأيام الخوالي ، عندما استخدمنا virtualenv و pip بشكل منفصل ، كان بإمكاننا الانتقال إلى أي دليل و pip install ، وسيتم تثبيت الحزمة بشكل صحيح في Virtualenv ، حقيقة أن pipenv لا تفعل ذلك _ في حين أن pipenv - يتم تنشيط virtualenv المُدارة _ يكسر توقعات المستخدم.

أنا أتفق مع ksze على هذا.

هناك توقع بأن pipenv يجب أن يدير Virtualenv النشط.

على نفس المنوال ... يجب أن أكون قادرًا على استخدام -r لتثبيت ملف Pipfile خارجي أو Pipenv.lock في virtualenv الحالية ، وليس إنشاء ملف آخر.

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