"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > أصبحت تعبئة Python رائعة الآن: `uv` هو كل ما تحتاجه

أصبحت تعبئة Python رائعة الآن: `uv` هو كل ما تحتاجه

تم النشر بتاريخ 2024-09-01
تصفح:399

Python Packaging is Great Now: `uv` is all you need

عنوان هذا المنشور هو إشارة إلى أن تغليف Python الخاص بـ Glyph جيد الآن. أعتقد أنه من الآمن أن نقول إننا، خلال هذه السنوات الثماني، انتقلنا من "جيد" إلى "عظيم". استمر في القراءة لمعرفة أسبابي.

ما الذي يجعل تغليف بايثون صعبًا للمبتدئين؟

أؤكد أن الصعوبات الرئيسية التي تواجه تغليف بايثون هي

  • Bootstrapping، أي كيفية البدء!
  • التنشيط، أي كيفية عمل venvs في Python (راجع موضوع Mastodon الخاص بي، من الصعب جدًا شرحه!)

كانت عملية Bootstrapping مشكلة غالبًا ما يتم إهمالها. هل يجب أن نطلب من الأشخاص تثبيت بايثون من https://python.org؟ توزيع اناكوندا؟ كيف نمنع الأشخاص من استخدام مدير حزم النظام الخاص بهم والمخاطرة بكسر كل شيء؟

ولا تنسَ دورة حياة البيئة الافتراضية بأكملها. من الجنون مدى خدري تجاه الأمر باعتباري مستخدمًا لبايثون لفترة طويلة، ولكن في كل مرة يتعين علي أن أشرحها أرى وجوه طلابي وأعتقد أن "هذا ليس جيدًا".

بالتأكيد، هناك مشكلات أخرى، مثل كيفية إنشاء ونشر الحزم القابلة للتوزيع. لكنني أزعم أن هذه لا تؤثر على معظم المبتدئين في بايثون . بالإضافة إلى ذلك، فهي في طور المعالجة أيضًا. واصل القراءة.

أدخل الأشعة فوق البنفسجية

في 15 فبراير، أطلق Astral الأشعة فوق البنفسجية وقفزت من السفينة على الفور. كجزء من وظيفتي، يتعين علي بشكل روتيني تثبيت الكثير من التبعيات التي يحتمل أن تكون متضاربة، وكان uv بمثابة راحة فورية.

ولكن الشيء المثير للاهتمام هو أن uv الآن قد تجاوزت مرحلة "النقطة الأسرع" الأولية وهي تفي بوعدها بأن تكون "مشروع بايثون شامل ومدير حزم سريع وموثوق وسهل الاستخدام".

]

بالعودة إلى مشاكل التمهيد والتنشيط التي ذكرتها في البداية، كيف تحلها الأشعة فوق البنفسجية؟ خذ بعين الاعتبار هذا:

  • uv لا يعتمد على بايثون نفسها. يمكن تثبيت الثنائيات المستقلة المترجمة مسبقًا بسهولة على Linux وmacOS وWindows.
  • uv python يدير إصدارات بايثون! لا حاجة للجوء إلى آليات خاصة بنظام التشغيل، مثل pyenv، أو deadsnakes، أو إلى أدوات ثقيلة الوزن مثل conda.
  • أداة الأشعة فوق البنفسجية تدير الأدوات في البيئات المركزية! لم تعد هناك حاجة إلى pipx أو التلاشي.
  • ينشئ uv init ملف pyproject.toml مجردًا باستخدام التظليل كواجهة خلفية للبناء وتخطيط src عامل مع ملف README فارغ ووحدة وهمية.
    • إذا كنت بحاجة إلى شيء أكثر تعقيدًا، فيمكنك دائمًا استخدام آلة التصوير أو أداة قطع ملفات تعريف الارتباط مع بعض القوالب الأكثر تعقيدًا.
  • يضيف uv add التبعيات إلى pyproject.toml، ينشئ venv إذا لم يكن واحدًا موجودًا، ويقوم بتثبيته!
  • يقوم uv lock بإنشاء ملف قفل يحتوي على جميع التبعيات الخاصة بك، والذي يمكنك بعد ذلك استخدامه في مزامنة uv.
    • وإذا كنت تريد ملف Requirements.txt القديم الجيد، فإن تجميع نقاط الأشعة فوق البنفسجية يقوم بذلك نيابةً عنك، تمامًا مثل أدوات النقاط!
  • ينفذ تشغيل uv البرامج النصية والأوامر، مرة أخرى دون تنشيط البيئات بشكل صريح!

في الأساس، هذا:

$ mkdir uv-playground
$ cd uv-playground
$ uv init
warning: `uv init` is experimental and may change without warning
Initialized project `uv-playground`
$ uv add click
warning: `uv add` is experimental and may change without warning
Using Python 3.12.3 interpreter at: /usr/bin/python3
Creating virtualenv at: .venv
Resolved 3 packages in 66ms
   Built uv-playground @ file:///tmp/uv-playground
Prepared 2 packages in 430ms
Installed 2 packages in 0.62ms
   click==8.1.7
   uv-playground==0.1.0 (from file:///tmp/uv-playground)
$ tree
.
├── pyproject.toml
├── README.md
├── src
│   └── uv_playground
│       ├── __init__.py
└── uv.lock

3 directories, 4 files
$ uv run python -c "from uv_playground import hello; print(hello())"
warning: `uv run` is experimental and may change without warning
Hello from uv-playground!

لذلك، بالنسبة للسؤال "كيف أبدأ في تعلم بايثون على جهاز الكمبيوتر الخاص بي"، يمكنك الآن الرد عالميًا: "تثبيت uv".

بعض التأملات

فيما يتعلق بموضوع البيئات الافتراضية، أنا أتفق بشكل أساسي مع أرمين عندما يقول

npm أفلت من دون أي ما يعادل "التنشيط" وأعتقد أن نظام Python البيئي المستقبلي لن يجد أيضًا فائدة كبيرة في تنشيط virtualenv.

لاحظت أيضًا أن uv init اختار الفقس. لقد كان لدي دائمًا تفضيل طفيف تجاه PDM، ولكن أعتقد أن هذه قد تكون نقطة اللاعودة.

لقد استغرق الأمر من ليا والمساهمين الكثير من العمل للتوصل إلى مخطط القرار هذا لدليل التعبئة والتغليف PyOpenSci. لكن حقيقة أن هناك الآن خط أساس يمكن للأشخاص تغييره في حالة كانت لديهم احتياجات أكثر تحديدًا (على سبيل المثال، Meson أو واجهة خلفية قادرة على البناء scikit) توفر مرة أخرى تجربة مطور أفضل بكثير.

على كوندا

يعد موضوع conda vs pip مصدرًا شائعًا آخر للارتباك. لقد كنت مستخدمًا ومعجبًا بـ conda منذ اليوم الأول، وقد أنقذ ذلك بايثون بشكل فعال من الموت الواضح جدًا في وقت كان من الصعب جدًا تثبيت الأشياء على Windows.

في السنوات التي تلت ذلك، كثيرًا ما أشرت إلى مشاركة المدونة القديمة التي كتبها Jake VanderPlas لشرح الاختلافات، ولكن يبدو أنها قضية خاسرة الآن.

لم تتم معالجة مشاكل التشغيل البيني بين النقطة والكوندا بشكل كامل أبدًا، وبينما أعتقد أن فريق Pixi يقوم بعمل رائع، أعتقد أن الأشعة فوق البنفسجية سوف تفوز على المدى الطويل.

أقر تمامًا أن حزم conda تم تنظيمها بشكل أفضل حول فكرة التعليمات البرمجية غير Python، وأن العالم الحالي لـ "العجلات السميكة على PyPI" يعد حلاً دون المستوى الأمثل. لكن النظام البيئي بأكمله تحرك في هذا الاتجاه: فمعظم الحزم تنشر الآن عجلات مجمعة مسبقًا لمجموعة متنوعة غنية من المنصات.

بمعنى آخر: قد لا تكون كوندا مفيدة في عام 2024 كما كانت في عام 2014، وربما حان الوقت للتوقف عن تدريسها للمبتدئين واعتبارها أداة متقدمة.

خاتمة

السبب في أن الوقت مبكر جدًا هو أن بعض أوامر الأشعة فوق البنفسجية هذه لا تزال تجريبية وقد تتطور في المستقبل. ولكن للمرة الأولى على الإطلاق، أرى بوضوح أداة سير عمل متوافقة مع المعايير، وشاملة، وخالية من مشكلات التمهيد، ومصممة بعناية، ويمكنها الفوز.

ما هو ما أراده العديد من نقاد التعبئة والتغليف في بايثون طوال الوقت، أليس كذلك؟ عدم الاضطرار إلى الاختيار من بين العديد من الأدوات المختلفة. لكنني أعتقد أن شركة uv تجاوزت ذلك بكثير وحلت مشكلات أخرى تتعلق بتجربة المطورين، وأنا سعيد وممتن لذلك.

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

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/astrojuanlu/python-packaging-is-great-now-uv-is-all-you-need-4i2d?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang@163 .com لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3