2011-11-28 14 views
5

मैं सिर्फ साइथन चुन रहा हूं। मैं अपने पायथन परियोजना में कोर लाइब्रेरी बनाने के लिए इसका उपयोग कर रहा हूं। वर्तमान में मैं distutils के साथ एक setup.py फ़ाइल कॉन्फ़िगर किया था और निम्न आदेश चला रहा हूँ जब भी मैं Cython फ़ाइल पुन: संयोजित करना चाहते हैं:क्या मैं स्वचालित रूप से साइथन फ़ाइलों को संकलित करने के लिए pydev को कॉन्फ़िगर कर सकता हूं?

python ./setup.py build_ext --inplace 

हालांकि, मैं अक्सर भूल जाते हैं। मुझे लगता है कि प्रत्येक बार जब मैं संपादित/सहेजता हूं तो एक्लिप्स स्वचालित रूप से जावा के लिए क्लास फाइलें कैसे बनाता है। क्या Pydev, ग्रहण, या किसी अन्य चालाक तरीके के लिए समान व्यवहार को कॉन्फ़िगर करना संभव है?

उत्तर

5

अभी के लिए वहाँ अपने आप फ़ाइलें cython संकलित करने के लिए PyDev में कोई विशेष समर्थन है, जब वे बदल जाते हैं ... आप आप एक बाहरी बिल्डर बना सकते हैं चाहते हैं:

राइट क्लिक करें परियोजना> गुण> बिल्डरों> नई> कार्यक्रम है, तो कार्यक्रम को पाइथन के रूप में कॉन्फ़िगर करने के लिए मॉड्यूल को पैरामीटर के रूप में कॉन्फ़िगर करें और तर्क के रूप में प्राप्त करने के लिए $ {build_files} चर।

आपको शायद यह जांचना चाहिए कि कुछ बदली गई फ़ाइल एक .pyx फ़ाइल है और यदि यह है, तो उस फ़ाइल के लिए वास्तविक बिल्ड कमांड को कॉल करें - और शायद निर्भरताएं।

+0

हालांकि साइथन समर्थन है http://pydev.blogspot.com/2011/10/pydev-cython.html – fabrizioM

1

आप अपने आधार PYTHONPATH कि pyximport कहता है, भले ही वह (जैसे, खिड़कियों के अंतर्गत, अपने MinGW स्थान) कुछ स्थापना विवरण की आवश्यकता है में एक "जादू" sitecustomize.py का उपयोग कर संकलन cython स्वचालित रूप से प्राप्त कर सकते हैं, यहाँ एक उदाहरण है:

import pyximport 
import os 
import numpy 
#import cython 
import Cython.Compiler.Options as Options 
Options.cimport_from_pyx = True 

if os.name == 'nt': 
    if os.environ.has_key('CPATH'): 
     os.environ['CPATH'] = os.environ['CPATH'] + numpy.get_include() 
    else: 
     os.environ['CPATH'] = numpy.get_include() 

    # XXX: we're assuming that MinGW is installed in C:\MinGW (default) 
    if os.environ.has_key('PATH'): 
     os.environ['PATH'] = os.environ['PATH'] + ';C:\MinGW\bin' 
    else: 
     os.environ['PATH'] = 'C:\MinGW\bin' 

    mingw_setup_args = { 'options': { 'build_ext': { 'compiler': 'mingw32' } } } 
    pyximport.install(setup_args=mingw_setup_args) 
elif os.name == 'posix': 
    if os.environ.has_key('CFLAGS'): 
     os.environ['CFLAGS'] = os.environ['CFLAGS'] + ' -I' + numpy.get_include() 
    else: 
     os.environ['CFLAGS'] = ' -I' + numpy.get_include() 

    pyximport.install() 

pyximport.DEBUG_IMPORT = True 

एक साइड नोट के रूप में, यदि आप खिड़कियों के नीचे हैं, तो कृपया ध्यान रखें कि आपका साइथन slightly modified मिंगव का उपयोग करने के लिए होना चाहिए।

आपको काम करने के लिए अपनी फाइल * .pyx भी कॉल करना चाहिए। एक और सलाह: आपको साइथन "शुद्ध पायथन" syntax का उपयोग करना चाहिए ताकि पीईडीवी संपादक शिकायत नहीं करेगा।

संबंधित मुद्दे

 संबंधित मुद्दे