لقد أمضيت اليوم كله في القراءة حول تثبيت التبعيات الفرعية من git وما زلت أجد صعوبة في إيجاد الحل الصحيح.
قمت بتشكيل مكتبة Python موجودة (متوفرة على PyPi) ، وأضفت بعض التغييرات التي من غير المحتمل دمجها في المنبع.
بعض مشاريعي تعتمد على شوكة المكتبة. في السابق كان تطبيقًا ، وكنت أستخدم Pipenv لإدارة تبعيات التطبيق ، حيث يمكنني بسهولة تحديد تثبيت فرع / الالتزام من Git في Pipfile. نما طلبي وأنا الآن أقوم بتحويله إلى مكتبة (لن يتم نشره على PyPi). أحتاج إلى حل مشكلة التبعيات الفرعية من Git للمكتبة.
لقد قرأت على الأقل المشكلات التالية: # 3610 و # 4187 و # 2124 و # 5384 والعديد من المشكلات الأخرى وبالطبع PEP. عندما انتهيت من القراءة ، شعرت بالارتباك أكثر مما كنت عليه عندما بدأت.
من خلال ما فهمته من تنفيذ PEP-508 في النقطة 10 ، يجب أن أكون قادرًا على استخدام:
setup(
name='dmfigol',
...
install_requires=[
"requests",
'smartsheet-python-sdk @ git+ssh://[email protected]/dmfigol/smartsheet-python-sdk@dev#egg=smartsheet-python-sdk-1.3.3',
],
)
لكنها لم تعمل:
-> % pip install git+https://<private-git>/dmfigol/my-test-project.git
Collecting git+https://<private-git>/dmfigol/my-test-project.git
...
Direct url requirement (like smartsheet-python-sdk@ git+ssh://[email protected]/dmfigol/smartsheet-python-sdk@dev#egg=smartsheet-python-sdk-1.3.3) are not allowed for dependencies
أسئلتي:
1) هل فعلت شيئًا خاطئًا أم أن هذا غير مدعوم؟
2) إذا لم يكن مدعومًا ، فهل سيتم دعمه؟
3) هل أفهم بشكل صحيح أنه يمكنني أيضًا استخدام بنية مماثلة في pyproject.toml
إذا كنت أرغب في الانتقال من setup.py إلى شيء أكثر تفصيلاً؟
4) هل الحل الوحيد المتاح اليوم لاستخدام قسم --process-dependency-links
و dependency_links
في setup.py
؟
5) ماذا يحدث عندما يقوم المنبع بتحديث المكتبة على PyPi إلى 1.3.4 أو أعلى ، وما زلت أرغب في استخدام الإصدار المتشعب 1.3.3؟
شكرا لك
UPD: حل يعمل حاليًا حتى يتم تنفيذ # 4187 إذا تعثرت في هذا الموضوع:
setup(
...
install_requires=[
"smartsheet-python-sdk==10.1.3.3",
],
dependency_links=[
'https://github.com/dmfigol/smartsheet-python-sdk/archive/no-setuptools-scm.zip#egg=smartsheet-python-sdk-10.1.3.3'
],
...
هل فعلت شيئًا خاطئًا أم أن هذا غير مدعوم؟
متطلبات عنوان URL لـ PEP 508 حيث لا يتم دعم التبعيات.
إذا لم يكن مدعومًا ، فهل سيتم دعمه؟
نعم فعلا. انظر أدناه.
هل أفهم بشكل صحيح أنه يمكنني أيضًا استخدام صيغة مماثلة في pyproject.toml إذا كنت أرغب في الترحيل من setup.py إلى شيء أكثر تفصيلاً؟
pyproject.toml
كمكان فقط لتحديد تبعيات وقت الإنشاء وللتكوين للأدوات. يتم تنفيذ أي شيء بخلاف ذلك بواسطة الأدوات التي تستخدمها.
هل الحل الوحيد المتاح اليوم لاستخدام قسم - ارتباطات العملية - التبعية - وارتباطات التبعية في setup.py؟
نعم فعلا. هذا هو الدافع الكامل وراء # 4187.
لقد قمنا بتعطيل القدرة على استخدام متطلبات عنوان URL لـ PEP 508 في التبعيات ، نظرًا لأننا لا نريد أن تؤدي الحزمة المثبتة من PyPI إلى وصول النقطة إلى عنوان URL تعسفي على الويب. في الأساس ، pip install spam
يجب ألا تجعل النقطة تصل إلى أي شيء باستثناء PyPI.
الحل الحالي المقترح في # 4187 هو ببساطة تعديل شرط الحظر بحيث يحظر فقط تبعيات عنوان URL عندما يتم بالفعل تثبيت حزمة من PyPI مباشرةً ، بحيث يمكن لأي وضع تثبيت آخر استخدام تبعيات عنوان URL لـ PEP 508.
شكرًا لك على الشرح التفصيلي ، أنا حقًا أقدر مساعدتك.
تم قفل سلسلة الرسائل هذه تلقائيًا نظرًا لعدم وجود أي نشاط حديث بعد إغلاقه. الرجاء فتح قضية جديدة للأخطاء ذات الصلة.
التعليق الأكثر فائدة
متطلبات عنوان URL لـ PEP 508 حيث لا يتم دعم التبعيات.
نعم فعلا. انظر أدناه.
pyproject.toml
كمكان فقط لتحديد تبعيات وقت الإنشاء وللتكوين للأدوات. يتم تنفيذ أي شيء بخلاف ذلك بواسطة الأدوات التي تستخدمها.نعم فعلا. هذا هو الدافع الكامل وراء # 4187.
لقد قمنا بتعطيل القدرة على استخدام متطلبات عنوان URL لـ PEP 508 في التبعيات ، نظرًا لأننا لا نريد أن تؤدي الحزمة المثبتة من PyPI إلى وصول النقطة إلى عنوان URL تعسفي على الويب. في الأساس ،
pip install spam
يجب ألا تجعل النقطة تصل إلى أي شيء باستثناء PyPI.الحل الحالي المقترح في # 4187 هو ببساطة تعديل شرط الحظر بحيث يحظر فقط تبعيات عنوان URL عندما يتم بالفعل تثبيت حزمة من PyPI مباشرةً ، بحيث يمكن لأي وضع تثبيت آخر استخدام تبعيات عنوان URL لـ PEP 508.