لست متأكدًا مما إذا كان هذا سلوكًا متوقعًا ، ولكن من منظور الاستخدام ، يبدو أن هذا خطأ:
pipenv install <package_name>
بإنشاء Virtualenv جديد على الرغم من تنشيط virtualenv باستخدام pipenv shell
.
إذا لم نكن في نفس الدليل حيث يوجد Pipfile
.
$ python -V
== 3.6.3$ 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
مرحبا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 الحالية ، وليس إنشاء ملف آخر.
التعليق الأكثر فائدة
erinxocon وهنا تكمن المشكلة: يتوقع المستخدمون أن تكون pipenv بديلاً للنقطة.
kennethreitz قال ذلك بنفسه على صفحة pipenv الرئيسية:
من المفترض أن لا يقوم pipenv فقط بإنشاء Virtualenv ، كما قلت ، ولكن أيضًا إدارته . مرة أخرى ، تم ذكره صراحةً في الصفحة الرئيسية (التركيز لي):
في الأيام الخوالي ، عندما استخدمنا virtualenv و pip بشكل منفصل ، كان بإمكاننا الانتقال إلى أي دليل و
pip install
، وسيتم تثبيت الحزمة بشكل صحيح في Virtualenv ، حقيقة أن pipenv لا تفعل ذلك _ في حين أن pipenv - يتم تنشيط virtualenv المُدارة _ يكسر توقعات المستخدم.