2010-10-30 11 views
13

मैंने एक सी एक्सटेंशन बनाया है जिसे मैं अपने पायथन पैकेज (setuptools का उपयोग करके) में सक्षम करना चाहता हूं, केवल एक कमांड लाइन विकल्प पास हो गया है। ऐसा करने का सबसे आसान तरीका क्या है?एक अजगर पैकेज के लिए वैकल्पिक सी एक्सटेंशन बनाने का सबसे आसान तरीका क्या है?

मुझे इस बारे में जाने का कोई सीधा तरीका नहीं दिख रहा है।

उत्तर

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

यह हैकी है, लेकिन यह सबसे आसान हो सकता है। ध्वज का समर्थन करने के लिए वितरण वर्ग का विस्तार करने के लिए एक और उन्नत दृष्टिकोण होगा, --with-modules कहें और फिर finalize_options के अंदर ext_modules को कस्टमाइज़ करें।

14

वास्तव में एक "वितरण" नामक एक वितरण/सेटअप टोल सुविधा है जिसका उपयोग इस के लिए किया जा सकता है। यह स्पष्ट रूप से --with-xxx और --without-xxx कमांड लाइन विकल्पों के आधार पर setup.py को अलग-अलग करने के लिए डिज़ाइन किया गया है।

  • यह blog post एक अच्छा परिचय देता है, मैं किसी भी बेहतर (- the Feature class और features keyword वितरित करें स्रोत के अलावा) इस समय प्रलेखन नहीं मिल रहा।
  • जिंजा प्रोजेक्ट का setup.py आपके सटीक उद्देश्य के लिए सुविधाएं का उपयोग करता है, यह काम करने के लिए एक अच्छा टेम्पलेट हो सकता है।
  • सरलजसन setup.py कुछ ऐसा ही करता है, सिवाय इसके कि इसे हमेशा सी-एक्सटेंशन सुविधा बनाने की कोशिश करने के लिए कोड किया गया है, और यह विफल होने पर शुद्ध-पायथन पर वापस आ गया है; यह आपके उद्देश्य के लिए भी उपयोगी हो सकता है।
संबंधित मुद्दे