سؤال

لقد قمت بإنشاء امتداد C أود تمكينه في حزمة Python الخاصة بي (باستخدام setuptools) فقط إذا تم تمرير خيار سطر الأوامر. ما هي أسهل طريقة للقيام بذلك؟

لا يبدو لي أن أجد أي طرق واضحة للقيام بذلك.

هل كانت مفيدة؟

المحلول

ext_modules = []
if '--add-this' in sys.argv:
    ext_modules.append(Extension(...))
    sys.argv.remove('--add-this')
setup(...
      ext_modules = ext_modules
)

هذا هو الاختراق ، ولكن قد يكون أسهل. سيكون النهج الأكثر تقدماً هو تمديد فئة التوزيع لدعم العلم ، على سبيل المثال --with-modules ثم تخصيص ext_modules داخل اللمسات الأخيرة.

نصائح أخرى

هناك بالفعل ميزة توزيع/setuptools تسمى "الميزات" التي يمكن استخدامها لهذا الغرض. تم تصميمه بشكل صريح للحصول على الإعداد. قم بعمل أشياء مختلفة بناءً على --with-xxx و --without-xxx خيارات سطر الأوامر.

  • هذه مشاركة مدونة يعطي مقدمة لطيفة ، لا يمكنني العثور على أي وثائق أفضل في هذا الوقت (إلى جانب مصدر التوزيع - فئة الميزة و ميزات الكلمة الرئيسية).
  • مشروع جينجا الإعداد يستخدم ميزات لغرضك الدقيق ، فقد يكون قالبًا جيدًا للعمل منه.
  • Simplejson الإعداد يقوم أيضًا بشيء مشابه ، إلا أنه يتم ترميزه دائمًا في محاولة لبناء ميزة C-Extension التي تحددها ، وتتراجع بأمان إلى Pure-Bython عند فشل البناء ؛ قد يكون هذا أيضًا مفيدًا لغرضك.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top