2016-04-27 8 views
7

के लिए PyCharm का सेटअप मुझे लगता है कि PyCharm supports Cythonसाइथन

मैं हमेशा टर्मिनल में संकलित और चला सकता हूं, लेकिन मुझे आश्चर्य है कि PyCharm में ऐसा करने का कोई तरीका है या नहीं। लिंक में यह कहता है: "बाहरी उपकरण का उपयोग करके संकलन किया जाता है। पसंदीदा बिल्ड सिस्टम (मेकफ़ाइल, setup.py, आदि) बाहरी उपकरणों के रूप में कॉन्फ़िगर किया जाना चाहिए।" मैं सोच रहा हूं कि इस कॉन्फ़िगरेशन को कैसे करें। साइथन का उपयोग कर पायचर्म में एक छोटा हैलो वर्ल्ड उदाहरण बहुत सराहना की जाएगी।

धन्यवाद

उत्तर

8

यहाँ मेरे अपने प्रश्न का उत्तर देना:

मान लीजिए कि हम समारोह fib.pyx करते हैं:

def fib(n): 
"""Print the Fibonacci series up to n.""" 
a, b = 0, 1 
while b < n: 
    print b, 
    a, b = b, a + b 

वहाँ संकलन और इस

चलाने के लिए दो तरीके हैं
  1. एक सेटअप फ़ाइल का उपयोग करें।

    from distutils.core import setup 
    from Cython.Build import cythonize 
    
    ext_options = {"compiler_directives": {"profile": True}, "annotate": True} 
    setup(
        ext_modules = cythonize("fib.pyx", **ext_options) 
    ) 
    

    ext_options एनोटेशन के साथ html फ़ाइल उत्पन्न करने के लिए यहाँ शामिल है: फ़ाइल setup.py करें। इस फ़ाइल को चलाने के लिए आपको टूल्स पर जाना होगा -> setup.py.py कार्य चलाएं। फिर build_extकार्य का नाम टाइप करें और कमांड लाइन इनपुट प्रकार --inplace के लिए संकेत दिए जाने पर। फाइल fib.c, fib.o और निष्पादन योग्य फ़ाइल fib.so उत्पन्न होता है। एनोटेशन फ़ाइल fib.html भी बनाई गई है।

    अब, निम्नलिखित कोड किसी भी अजगर फ़ाइल में काम करना चाहिए, उदाहरण के main.py के लिए:

    import fib 
    fib.fib(2000) 
    
  2. जाना बहुत ही आसान तरीका pyximport उपयोग करने के लिए है। कोई सेटअप फ़ाइल की आवश्यकता नहीं है। ध्यान दें कि यह केवल तभी "your module doesn’t require any extra C libraries or a special build setup." फ़ाइल main.py अब की तरह दिखना चाहिए इस्तेमाल किया जा सकता: जहाँ तक

    import pyximport; pyximport.install() 
    import fib 
    fib.fib(2000) 
    

    मैं समझता हूँ के रूप में कोड का एक ही संकलन होता है यहां तक ​​कि fib.c, हालांकि fib.o और fib.so फ़ाइलें प्रोजेक्ट फ़ोल्डर में समाप्त नहीं होती हैं। fib.html कोड या तो उत्पन्न नहीं होता है, लेकिन यह मुख्य फ़ाइल में दो पंक्तियों को जोड़कर तय किया जा सकता है। नई लाइनों के साथ main.py अब है:

    import pyximport; pyximport.install() 
    import subprocess 
    subprocess.call(["cython", "-a", "fib.pyx"]) 
    import fib 
    fib.fib(2000) 
    
+0

इन निर्देशों के अलावा, हम भी सुनिश्चित करना है कि PyCharm जानता है कि पैकेज fodler एक पायथन मॉड्यूल शामिल हैं, वरना यह यह ध्यान नहीं देगा । Https://stackoverflow.com/questions/40203488/pycharm-does-not-recognize-cython-modules-located-in-path देखें – Contango