اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

عند تثبيت احدث اصدر من بابيثون هل المكتبات واطار العمل هثبيتها من اول وجديد ؟

وهل في فرق بين لو انا عمل بيئه افترضيه وبين تثبيت المكتبات واطار العمل علي النظام في التقطه ده ؟

 

Recommended Posts

  • 0
نشر

وعليكم السلام،

كل نسخة من نسخ بايثون تأتي ومعها بيئة نظام افتراضية خاصة بها. لذلك، إذا ثبتت Python 3.11 مثلا و كذلك Python 3.12، فأنت لديك الآن مكانان مختلفان في كل مكان هناك نسخة محددة من Python (لا أنصح بتثبيت نسختين مختلفتين على نفس النظام، هذا قد يتسبب في مشاكل مزعجة أثناء الاستخدام). هذا يعني أن لديك برنامجين يسميان python، وكذلك برنامجين من pip التي تستخدمها لتثبيت المكتبات الأخرى.

لذلك، عند ترقية نسخة Python (يعني حذف النسخة السابقة وتثبيت الجديدة) فسوف تفقد كل المكتبات التي كانت تستخدمه، وسوف تحتاج إلى تثبيتها مرة أخرى مجددا.

ونفس الشيء ينطبق على البيئات الافتراضية التي تنشؤها باستخدام venv. لأن ما يقوم به هذا الأمر هو مجرد إنشاء نسخة من مفسر Python مع كل الملفات الضرورية ووضعها في المكان الذي تحدده أنت. لذلك فعندما تقوم بالترقية فإن هذه النسخة ليست معنية بهذا الأمر وسوف تبقى تستخدم نسخة Python قديمة. في الواقع، في الأنظمة التي تدعم الروابط الرمزية (Symbolic links) (يعني أشباه Unix، كل الأنظمة تقريبا ما عدا Windows) لا تتم عملية النسخ بالشكل المبسط بل يتم -بشكل افتراضي- القيام بربط رمزي بين الملفات التنفيذية الخاصة بالمفسر في البيئة الافتراضية التي تنشؤها بحيث تصير تشير إلى النسخة المثبتى على النظام. وهذا يعني أن البيئات الافتراضية تتأثر بالترقية، وقد يتسبب هذا في مشاكل إذا كانت الاعتماديات التي مشروعك لا تدعم النسخة الجديدة من المفسر.

حسنا بعد كل هذا الكلام الطويل خذ نصيحة واحدة من أجل أن نختصر: لا تقم بالترقية إلى نسخة جديدة من بايثون في كل مرة تظهر نسخة. هذا شيء متعب بدون فائدة. يجب أن يكون لديك سبب مقنع للترقية. وفي حالة ما قمت بالترقية، احذف البيئات الافتراضية السابقة وأعد إنشائها من البداية. إعادة إنشاء البيئة الافتراضية ليس شيئا مزعجا (باستثناء ما يتعلق باستهلاك الأنترنت والوقت) إذا كنت تحفظ اعتماديات مشروعك باستخدام ملف requirements.txt أو كنت تستخدم أداة أكثر فعالية مثل Pipenv أو Poetry. بالمناسبة، إذا كنت لا تحفظ اعتماديات مشروعك، فيجب البدأ فورا بفعل ذلك، لأن هذا هو التصرف الصحيح الذي يجب أن يقوم به كل مبرمجي Python.

  • 0
نشر
بتاريخ 2 ساعة قال حمزة عباد:

وعليكم السلام،

كل نسخة من نسخ بايثون تأتي ومعها بيئة نظام افتراضية خاصة بها. لذلك، إذا ثبتت Python 3.11 مثلا و كذلك Python 3.12، فأنت لديك الآن مكانان مختلفان في كل مكان هناك نسخة محددة من Python (لا أنصح بتثبيت نسختين مختلفتين على نفس النظام، هذا قد يتسبب في مشاكل مزعجة أثناء الاستخدام). هذا يعني أن لديك برنامجين يسميان python، وكذلك برنامجين من pip التي تستخدمها لتثبيت المكتبات الأخرى.

لذلك، عند ترقية نسخة Python (يعني حذف النسخة السابقة وتثبيت الجديدة) فسوف تفقد كل المكتبات التي كانت تستخدمه، وسوف تحتاج إلى تثبيتها مرة أخرى مجددا.

ونفس الشيء ينطبق على البيئات الافتراضية التي تنشؤها باستخدام venv. لأن ما يقوم به هذا الأمر هو مجرد إنشاء نسخة من مفسر Python مع كل الملفات الضرورية ووضعها في المكان الذي تحدده أنت. لذلك فعندما تقوم بالترقية فإن هذه النسخة ليست معنية بهذا الأمر وسوف تبقى تستخدم نسخة Python قديمة. في الواقع، في الأنظمة التي تدعم الروابط الرمزية (Symbolic links) (يعني أشباه Unix، كل الأنظمة تقريبا ما عدا Windows) لا تتم عملية النسخ بالشكل المبسط بل يتم -بشكل افتراضي- القيام بربط رمزي بين الملفات التنفيذية الخاصة بالمفسر في البيئة الافتراضية التي تنشؤها بحيث تصير تشير إلى النسخة المثبتى على النظام. وهذا يعني أن البيئات الافتراضية تتأثر بالترقية، وقد يتسبب هذا في مشاكل إذا كانت الاعتماديات التي مشروعك لا تدعم النسخة الجديدة من المفسر.

حسنا بعد كل هذا الكلام الطويل خذ نصيحة واحدة من أجل أن نختصر: لا تقم بالترقية إلى نسخة جديدة من بايثون في كل مرة تظهر نسخة. هذا شيء متعب بدون فائدة. يجب أن يكون لديك سبب مقنع للترقية. وفي حالة ما قمت بالترقية، احذف البيئات الافتراضية السابقة وأعد إنشائها من البداية. إعادة إنشاء البيئة الافتراضية ليس شيئا مزعجا (باستثناء ما يتعلق باستهلاك الأنترنت والوقت) إذا كنت تحفظ اعتماديات مشروعك باستخدام ملف requirements.txt أو كنت تستخدم أداة أكثر فعالية مثل Pipenv أو Poetry. بالمناسبة، إذا كنت لا تحفظ اعتماديات مشروعك، فيجب البدأ فورا بفعل ذلك، لأن هذا هو التصرف الصحيح الذي يجب أن يقوم به كل مبرمجي Python.

تمام , شكرااا لحضرتك

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...