انتقل إلى المحتوى

PyPI

لنشر package بلغة Python بصيغة PyPI على ليڤانت غيت (LevantGit)، أضف الـ registry إلى ملف ~/.pypirc، وصادِق بـ access token بصلاحية package، ثم ارفع الملفات بـ twine upload. وللتثبيت، وجّه pip إلى عنوان الـ registry نفسه. تشرح هذه الصفحة الخطوتين، مع طريقة عرض الحزم وحذفها.

ملاحظة

الـ package registry متاح إن كان مفعّلاً على levantgit.com؛ تظهر تبويبة Packages في ملفك الشخصي أو في الـ repository عندها.

ما تحتاج إليه

  • pip لتثبيت الـ packages.
  • twine لنشرها.
  • اسم المستخدم وكلمة المرور، أو access token من إعدادات الحساب: SettingsApplications، بصلاحية package. إن كنت تستخدم 2FA أو تسجيل الدخول عبر OAuth فلا بد من الـ access token بدل كلمة المرور.

ضبط الـ registry

عدّل ملف ~/.pypirc في مجلد المنزل لديك (أنشئه إن لم يكن موجودًا) وأضف:

[distutils]
index-servers = LevantGit

[LevantGit]
repository = https://levantgit.com/api/packages/{owner}/pypi
username = {username}
password = {password}
العنصر الوصف
owner الـ owner: اسم المستخدم أو الـ organization.
username اسم المستخدم في ليڤانت غيت.
password كلمة المرور، أو الـ access token إن كنت تستخدم 2FA أو OAuth.

تنبيه

هذا الملف يحوي بيانات دخولك نصًّا صريحًا. لا تضعه في repository، وفضّل access token محدود الصلاحية على كلمة المرور.

نشر package

بعد بناء الـ package (مثلًا بـ python3 -m build) نفّذ:

python3 -m twine upload --repository LevantGit /path/to/files/*

ملفات الـ package تنتهي بـ .tar.gz و.whl.

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

تثبيت package

pip install --index-url https://{username}:{password}@levantgit.com/api/packages/{owner}/pypi/simple --no-deps {package_name}
المعامل الوصف
username اسم المستخدم في ليڤانت غيت.
password كلمة المرور أو الـ access token.
owner الـ owner.
package_name اسم الـ package.

مثال:

pip install --index-url https://testuser:[email protected]/api/packages/testuser/pypi/simple --no-deps test_package

لاحظ --no-deps: الـ registry في ليڤانت غيت يحوي package مشروعك وحدها، لا تبعياتها. ثبّت التبعيات من PyPI الرسمي بأمر منفصل، أو أسقط --no-deps إن كانت كل التبعيات منشورة في الـ registry نفسه.

تنبيه

يمكنك استخدام --extra-index-url بدل --index-url، لكن ذلك يعرّضك لهجمات خلط التبعيات (dependency confusion): pip يبحث في PyPI الرسمي أولًا قبل الـ registry الخاص بك، فإن نشر أحدهم package بالاسم نفسه هناك ثُبّتت بدل package مشروعك. راجع وثائق pip قبل استخدامه.

الأوامر المدعومة

pip install
twine upload

ماذا بعد؟


هذه الصفحة مبنية على وثائق Gitea (رخصة MIT) بعد ترجمتها وتبسيطها.