اجعل جميع الحزم الخاصة في مكان واحد في مكان واحد
مع مؤشر PYPI المستضيف GITHUB
الوصف • جربه! • ابدأ • تعديل الحزم المفهرسة • الأسئلة الشائعة • كلمة عن هجمات سلسلة التوريد • المساهمة • المراجع
هذا المستودع عبارة عن صفحة github تستخدم كفهرس PYPI ، تتوافق مع PEP503.
يمكنك استخدامه لتجميع جميع الحزم في مكان واحد ، والوصول إليها بسهولة من خلال pip ، مثل أي حزمة أخرى متوفرة للجمهور!
على الرغم من أن مؤشر PYPI عام ، إلا أن الحزم الخاصة المفهرسة هنا يتم الاحتفاظ بها الخاصة: ستحتاج إلى مصادقة جيثب لتتمكن من استردادها.
قم بزيارة Astariul.github.io/github-hosted-pypi/ وحاول تثبيت الحزم المفهرسة هناك!
حاول تثبيت الحزمة public-hello :
pip install public-hello --extra-index-url https://astariul.github.io/github-hosted-pypi/ كما سيتم تثبيت الحزمة mydependency ، تلقائيا!
جربه مع:
from public_hello import hi
print ( hi ())يمكنك أيضًا تثبيت نسخة محددة:
pip install public-hello==0.1 --extra-index-url https://astariul.github.io/github-hosted-pypi/ حاول الآن تثبيت الحزمة private-hello :
pip install private-hello --extra-index-url https://astariul.github.io/github-hosted-pypi/لن ينجح الأمر ، لأنه خاص ويمكنني فقط الوصول إليه!
Settings المستودع الخاص بك ، وتمكين صفحة githubindex.html و pkg_template.html حسب رغبتك<user>.github.io/<repo_name> لرؤية فهرس PYPI الخاص بك الآن بعد إعداد فهرس PYPI الخاص بك ، يمكنك تسجيل / تحديث / حذف الحزم المفهرسة.
يتم إعداد إجراءات github للقيام بذلك تلقائيًا من أجلك.
عليك فقط أن:
Actions في مستودعكregister / update / delete ) وادفعه يدويًا كما تعلم ، يمكن pip تثبيت حزمة مستضافة GitHub إذا تم تقديمها في نموذج pip install git+<repo_link> . فهرس PYPI هذا هو مجرد فهرس للروابط لمستودع GitHub الآخر.
صفحات github عامة ، لذلك فهرس PYPI هذا عام. لكنه يحتوي على روابط لمستودعات GitHub الأخرى ، لا يتم استضافة رمز على فهرس PYPI هذا!
إذا كان رمز استضافة المستودع خاصًا ، فستحتاج إلى المصادقة مع Github لتتمكن من استنساخه ، مما يجعله خاصًا بشكل فعال.
إذا كنت تتساءل بشكل أكثر تحديداً عن هجمات سلسلة التوريد ، تحقق من القسم عنه!
عند تشغيل pip install <package_name> --extra-index-url https://astariul.github.io/github-hosted-pypi/ ، يحدث ما يلي:
pip في https://pypi.org/ ، الفهرس العام الافتراضي ، في محاولة للعثور على حزمة مع الاسم المحدد.https://astariul.github.io/github-hosted-pypi/ .pip ( git+<repo_link>@<tag> ).pip أنه مستودع GitHub وسيقوم باستنساخ المستودع (في العلامة المحددة) محليًا.pip تثبيت الحزمة.pip تثبيت أي تبعية مفقودة مع نفس الخطوات.المصادقة تحدث في الخطوة 4 ، عند استنساخ المستودع.
أفضل الممارسات الفردية هي استخدام إصدارات GitHub. هذا يسمح للحزمة الخاصة بك بإحالة إصدار من خلال علامة محددة.
للقيام بذلك:
pip install git+<repo_link>@<tag>git+<repo_link>@<tag> ). يمكنك فقط تحديد اسم مختلف للحزمة المفهرسة الخاصة بك. فقط أعطه اسمًا مختلفًا في النموذج عند تسجيله.
على سبيل المثال ، إذا كان لديك حزمة خاصة تسمى tensorflow ، عند تسجيلها في هذا الفهرس ، يمكنك تسميته my_cool_tensorflow ، لذلك لا يوجد اسم مع الحزمة العامة tensorflow .
ثم يمكنك تثبيته باستخدام pip install my_cool_tensorflow --extra-index-url https://astariul.github.io/github-hosted-pypi/ .
ثم من python ، يمكنك فقط القيام:
import tensorflowلكن كن حذرا بشأن هذا! على الرغم من أنه من الممكن التعامل معها على هذا النحو ، إلا أنه من الأفضل دائمًا أن يكون لديك اسم فريد لحزمةك ، لتجنب الالتباس ولكن أيضًا للأمان!
بناء صورة Docker ليس تفاعليًا ، لذلك لا يوجد موجه للكتابة اسم المستخدم وكلمة المرور.
بدلاً من ذلك ، يجب عليك وضع بيانات اعتماد GitHub في ملف .netrc ، بحيث يمكن pip المصادقة عند الاستنساخ من GitHub.
للقيام بذلك بشكل آمن على Docker ، يجب عليك استخدام أسرار Docker. إليك برنامج تعليمي سريع حول كيفية القيام به:
الخطوة 1 : احفظ بيانات الاعتماد الخاصة بك في ملف سري. اتبع هذا المثال:
machine github.com
login <gh_user>
password <gh_pass>
n .
لذا احذر إذا كنت تستخدم IDE التي تحل محل علامات التبويب بالمسافات أو إذا كنت على Windows (حيث تكون نهايات الخط rn )!
دعنا نسمي هذا الملف gh_auth.txt .
الخطوة 2 : إنشاء ملف Docker الخاص بك. في ملف Docker ، يجب عليك تثبيت الملف السري في .netrc ، وتشغيل الأمر حيث تحتاج إلى المصادقة. على سبيل المثال :
# syntax=docker/dockerfile:experimental
FROM python:3
RUN --mount=type=secret,id=gh_auth,dst=/root/.netrc pip install <package_name> --extra-index-url https://astariul.github.io/github-hosted-pypi/الخطوة 3 : قم بإنشاء صورة Docker الخاصة بك ، وتحديد موقع السر الذي تم إنشاؤه في الخطوة 1:
sudo DOCKER_BUILDKIT=1 docker build --secret id=gh_auth,src=./gh_auth.txt .
إذا كانت لديك أي أسئلة أو أفكار لتحسين هذه الأسئلة الشائعة ، فيرجى فتح مشكلة علاقات عامة / فارغة!
كما رأيت في وقت سابق ، يعتمد مؤشر PYPI المستضيف GITHUB على ميزة pip --extra-index-url . نظرًا لكيفية عمل هذه الميزة ، فهي عرضة لهجمات سلسلة التوريد.
على سبيل المثال ، لنفترض أن لديك حزمة تسمى fbi_package الإصدار 2.8.3 المستضافة على فهرس PYPI الخاص بك.
يمكن للمهاجم إنشاء حزمة ضارة بنفس الاسم وإصدار أعلى (على سبيل المثال 99.0.0 ).
عندما تقوم بتشغيل pip install fbi_package --extra-index-url my_pypi_index.com ، ستقوم تحت Hood pip بتنزيل أحدث إصدار من الحزمة ، وهي الحزمة الضارة!
على الرغم من أن هذا المستودع يجعل من المريح للغاية الحصول على فهرس PYPI الخاص بك ، كن على دراية بأن الصفحة عامة ، وبالتالي يمكن لأي شخص معرفة اسم الحزمة الذي تستخدمه وإنشاء حزمة ضارة بهذا الاسم نفسه ...
لهذا السبب قمنا بتضمين عمليات التحقق الآلية في مؤشر PYPI الخاص هذا. عندما تصل إلى صفحة الحزمة الخاصة بك ، يتم استدعاء PYPI API ، وإذا تم العثور على حزمة تحمل نفس الاسم وإصدار أعلى ، يتم استبدال أمر التثبيت بتحذير.
يمكنك رؤية عرض تجريبي لهذا التحذير في https://astariul.github.io/github-hosted-pypi/transformers/.
إذا رأيت هذا التحذير ، فلا تقوم بتثبيت الحزمة! بدلاً من ذلك ، قم بتغيير اسم الحزمة الخاصة بك أو ترقية الإصدار فوق نظيره العام.
كن حذرا هناك!
القضايا والعلاقات العامة موضع ترحيب!
إذا صادفت أي شيء غريب / يمكن تحسينه ، فيرجى الاتصال!
هذا مستوحى إلى حد كبير من هذا المستودع.
إنه مجرد إصدار مجيد ، مع صفحات أنظف وإجراءات github لإضافة الحزم وتحديثها وإزالتها بسهولة من الفهرس.
تحقق أيضًا من المدونة للمؤلف الأصلي!
تم صنع الرمز المستخدم في الصفحة من Freepik من Flaticon