سجلات الحزم الخاصة
متى تحتاج هذا
Section titled “متى تحتاج هذا”إذا كان مشروعك يعتمد على حزم Python داخلية أو خاصة مستضافة على سجل خاص بدلاً من PyPI العام، ستحتاج إلى:
- إخبار UV أين يجد الحزمة (رابط فهرس)
- إخبار UV أي حزم تأتي من ذلك الفهرس (تعيين مصدر)
- تقديم بيانات اعتماد حتى يتمكن UV من المصادقة أثناء التثبيت
يستخدم CrewAI AMP UV لحل وتثبيت الاعتماديات.
يدعم UV السجلات الخاصة المصادق عليها عبر تهيئة pyproject.toml مع
متغيرات بيئة لبيانات الاعتماد.
الخطوة 1: تهيئة pyproject.toml
Section titled “الخطوة 1: تهيئة pyproject.toml”ثلاثة أجزاء تعمل معاً في pyproject.toml:
1أ. التصريح بالاعتمادية
Section titled “1أ. التصريح بالاعتمادية”أضف الحزمة الخاصة إلى [project.dependencies] كأي اعتمادية أخرى:
[project]dependencies = [ "crewai[tools]>=0.100.1,<1.0.0", "my-private-package>=1.2.0",]1ب. تعريف الفهرس
Section titled “1ب. تعريف الفهرس”سجّل سجلك الخاص كفهرس مسمّى تحت [[tool.uv.index]]:
[[tool.uv.index]]name = "my-private-registry"url = "https://pkgs.dev.azure.com/my-org/_packaging/my-feed/pypi/simple/"explicit = true1ج. تعيين الحزمة للفهرس
Section titled “1ج. تعيين الحزمة للفهرس”أخبر UV أي حزم يجب حلها من فهرسك الخاص باستخدام [tool.uv.sources]:
[tool.uv.sources]my-private-package = { index = "my-private-registry" }مثال كامل
Section titled “مثال كامل”[project]name = "my-crew-project"version = "0.1.0"requires-python = ">=3.10,<=3.13"dependencies = [ "crewai[tools]>=0.100.1,<1.0.0", "my-private-package>=1.2.0",]
[tool.crewai]type = "crew"
[[tool.uv.index]]name = "my-private-registry"url = "https://pkgs.dev.azure.com/my-org/_packaging/my-feed/pypi/simple/"explicit = true
[tool.uv.sources]my-private-package = { index = "my-private-registry" }بعد تحديث pyproject.toml، أعد إنشاء ملف القفل:
uv lockالخطوة 2: تعيين بيانات اعتماد المصادقة
Section titled “الخطوة 2: تعيين بيانات اعتماد المصادقة”يصادق UV ضد الفهارس الخاصة باستخدام متغيرات بيئة تتبع اصطلاح تسمية
بناءً على اسم الفهرس الذي حددته في pyproject.toml:
UV_INDEX_{UPPER_NAME}_USERNAMEUV_INDEX_{UPPER_NAME}_PASSWORDحيث {UPPER_NAME} هو اسم فهرسك محوّلاً إلى أحرف كبيرة مع استبدال الشرطات بشرطات سفلية.
على سبيل المثال، فهرس باسم my-private-registry يستخدم:
| المتغير | القيمة |
|---|---|
UV_INDEX_MY_PRIVATE_REGISTRY_USERNAME | اسم مستخدم السجل أو اسم الرمز |
UV_INDEX_MY_PRIVATE_REGISTRY_PASSWORD | كلمة مرور السجل أو الرمز/PAT |
مرجع مزودي السجلات
Section titled “مرجع مزودي السجلات”يوضح الجدول أدناه تنسيق رابط الفهرس وقيم بيانات الاعتماد لمزودي السجلات الشائعين. استبدل القيم المؤقتة بتفاصيل مؤسستك وخلاصتك الفعلية.
| المزود | رابط الفهرس | اسم المستخدم | كلمة المرور |
|---|---|---|---|
| Azure DevOps Artifacts | https://pkgs.dev.azure.com/{org}/_packaging/{feed}/pypi/simple/ | أي نص غير فارغ (مثل token) | Personal Access Token (PAT) بنطاق Packaging Read |
| GitHub Packages | https://pypi.pkg.github.com/{owner}/simple/ | اسم مستخدم GitHub | Personal Access Token (classic) بنطاق read:packages |
| GitLab Package Registry | https://gitlab.com/api/v4/projects/{project_id}/packages/pypi/simple/ | __token__ | Project أو Personal Access Token بنطاق read_api |
| AWS CodeArtifact | استخدم الرابط من aws codeartifact get-repository-endpoint | aws | رمز من aws codeartifact get-authorization-token |
| Google Artifact Registry | https://{region}-python.pkg.dev/{project}/{repo}/simple/ | _json_key_base64 | مفتاح حساب الخدمة بتشفير Base64 |
| JFrog Artifactory | https://{instance}.jfrog.io/artifactory/api/pypi/{repo}/simple/ | اسم المستخدم أو البريد الإلكتروني | مفتاح API أو رمز الهوية |
| مستضاف ذاتياً (devpi، Nexus، إلخ.) | رابط Simple API لسجلك | اسم مستخدم السجل | كلمة مرور السجل |
تعيين متغيرات البيئة في AMP
Section titled “تعيين متغيرات البيئة في AMP”يجب تهيئة بيانات اعتماد السجل الخاص كمتغيرات بيئة في CrewAI AMP. لديك خياران:
- سجّل الدخول إلى CrewAI AMP
- انتقل إلى أتمتتك
- افتح علامة تبويب Environment Variables
- أضف كل متغير (
UV_INDEX_*_USERNAMEوUV_INDEX_*_PASSWORD) مع قيمته
راجع خطوة النشر على AMP — تعيين متغيرات البيئة للتفاصيل.
أضف المتغيرات إلى ملف .env المحلي قبل تشغيل crewai deploy create.
سينقلها CLI بأمان إلى المنصة:
OPENAI_API_KEY=sk-...UV_INDEX_MY_PRIVATE_REGISTRY_USERNAME=tokenUV_INDEX_MY_PRIVATE_REGISTRY_PASSWORD=your-pat-herecrewai deploy createلتحديث بيانات الاعتماد في نشر حالي، راجع تحديث طاقمك — متغيرات البيئة.
كيف يعمل الكل معاً
Section titled “كيف يعمل الكل معاً”عندما يبني CrewAI AMP أتمتتك، يعمل تدفق الحل هكذا:
- بدء البناء
يسحب AMP مستودعك ويقرأ
pyproject.tomlوuv.lock. - UV يحل الاعتماديات
يقرأ UV
[tool.uv.sources]لتحديد أي فهرس يجب أن تأتي منه كل حزمة. - UV يصادق
لكل فهرس خاص، يبحث UV عن
UV_INDEX_{NAME}_USERNAMEوUV_INDEX_{NAME}_PASSWORDمن متغيرات البيئة التي هيأتها في AMP. - تثبيت الحزم
يحمّل UV ويثبّت جميع الحزم — العامة (من PyPI) والخاصة (من سجلك).
- تشغيل الأتمتة
يبدأ طاقمك أو تدفقك مع توفر جميع الاعتماديات.
استكشاف الأخطاء وإصلاحها
Section titled “استكشاف الأخطاء وإصلاحها”أخطاء المصادقة أثناء البناء
Section titled “أخطاء المصادقة أثناء البناء”العرض: فشل البناء بـ 401 Unauthorized أو 403 Forbidden عند حل حزمة خاصة.
تحقق من:
- أسماء متغيرات البيئة
UV_INDEX_*تتطابق مع اسم فهرسك بالضبط (أحرف كبيرة، شرطات → شرطات سفلية) - بيانات الاعتماد معيّنة في متغيرات بيئة AMP، وليس فقط في
.envمحلي - الرمز/PAT لديه صلاحيات القراءة المطلوبة لخلاصة الحزم
- الرمز لم تنتهِ صلاحيته (ذو صلة خاصة لـ AWS CodeArtifact)
الحزمة غير موجودة
Section titled “الحزمة غير موجودة”العرض: No matching distribution found for my-private-package.
تحقق من:
- رابط الفهرس في
pyproject.tomlينتهي بـ/simple/ - إدخال
[tool.uv.sources]يعيّن اسم الحزمة الصحيح لاسم الفهرس الصحيح - الحزمة منشورة فعلاً في سجلك الخاص
- شغّل
uv lockمحلياً بنفس بيانات الاعتماد للتحقق من عمل الحل
تعارضات ملف القفل
Section titled “تعارضات ملف القفل”العرض: فشل uv lock أو نتائج غير متوقعة بعد إضافة فهرس خاص.
الحل: عيّن بيانات الاعتماد محلياً وأعد الإنشاء:
export UV_INDEX_MY_PRIVATE_REGISTRY_USERNAME=tokenexport UV_INDEX_MY_PRIVATE_REGISTRY_PASSWORD=your-patuv lockثم ارفع uv.lock المُحدّث.