12.1. مقدمة #
غالبًا ما تستخدم تطبيقات بايثون حزمًا ووحدات نمطية غير متضمنة في المكتبة القياسية. قد تحتاج التطبيقات أحيانًا إلى إصدار محدد من المكتبة، فقد يتطلب التطبيق إصلاح خطأ معين، أو قد يُكتب باستخدام إصدار قديم من واجهة المكتبة.
هذا يعني أنه قد لا يكون من الممكن لتثبيت بايثون واحد تلبية متطلبات جميع التطبيقات. إذا احتاج التطبيق أ إلى الإصدار ١.٠ من وحدة نمطية معينة، بينما يحتاج التطبيق ب إلى الإصدار ٢.٠، فإن المتطلبات متعارضة، وسيؤدي تثبيت أي من الإصدارين ١.٠ أو ٢.٠ إلى عدم قدرة أحد التطبيقين على العمل.
يكمن حل هذه المشكلة في إنشاء بيئة افتراضية، وهي شجرة مجلدات مستقلة تحتوي على تثبيت بايثون لإصدار معين، بالإضافة إلى عدد من الحزم الإضافية.
يمكن للتطبيقات المختلفة بعد ذلك استخدام بيئات افتراضية مختلفة. لحل المثال السابق لتعارض المتطلبات، يمكن للتطبيق “أ” أن يمتلك بيئة افتراضية خاصة به مثبت عليها الإصدار 1.0، بينما يمتلك التطبيق “ب” بيئة افتراضية أخرى مثبت عليها الإصدار 2.0. إذا تطلب التطبيق “ب” ترقية مكتبة إلى الإصدار 3.0، فلن يؤثر ذلك على بيئة التطبيق “أ”.