2011-11-09 13 views
5

के साथ भाग निर्माण के साथ बिल्डआउट मुझे बिल्डआउट में साइथन के साथ समस्या का सामना करना पड़ रहा है।साइथन

भाग में से एक एक मॉड्यूल है जो .c फ़ाइल और .pyx फ़ाइल से साइथन के साथ बना है।

मैं पहले से ही कोशिश की है कई समाधान:

लेकिन सभी त्रुटि के साथ समाप्त होता है:

ImportError: No module named Cython.Distutils

यह संलग्न जब buildout लोडइस साइथन मॉड्यूल के।

ध्यान दें कि setup.py कार्यात्मक है जब इसकी अपनी निर्देशिका से और बिल्डआउट बिन निर्देशिका में एक दुभाषिया के साथ कहा जाता है।

आपकी मदद के लिए धन्यवाद।

+0

क्या आप वाकई Cython ठीक से स्थापित है और आप 'PYTHONPATH' वातावरण चर निर्धारित किया है dir जहां Cython मॉड्यूल रहते हैं शामिल करने के लिए कर रहे हैं? –

+0

क्या आपका सिस्टम स्तर पर मतलब था? इससे सिथन के बिना सिस्टम पर इस बिल्डआउट को तैनात नहीं किया जा सकता है ...? –

+0

"सिस्टम स्तर" से आपका क्या मतलब है? –

उत्तर

4

आपके द्वारा लिंक किए गए लेख आपको बताते हैं कि बिल्डआउट से साइथन को कैसे इंस्टॉल करें, लेकिन ऐसा करने के लिए आपको site-packages फ़ोल्डर में पहुंच लिखने की आवश्यकता है। वहाँ 3 तरीके आप उन buildouts चलाने के लिए सक्षम होना चाहिए:

  1. रूट के रूप में यह भागो और सिस्टम अजगर का साइट-पैकेज में Cython स्थापित करें। आमतौर पर आप ऐसा करने से बचना चाहते हैं।

  2. अपना खुद का पायथन संकलित करें। यह एकमात्र विकल्प हो सकता है यदि आप पाइथन के संस्करण का उपयोग करना चाहते हैं जो पहले से ही सिस्टम पर नहीं है। बिल्डआउट कॉन्फ़िगरेशन हैं जो आपको बिल्डआउट के अंदर से पायथन का कोई भी संस्करण बनाने देगा।

  3. virtualenv का उपयोग करें। यह आपके site-packages फ़ोल्डर सहित पाइथन के लिए पूर्ण वर्चुअल वातावरण (बिल्डआउट फ़ोल्डर में) बनाएगा। यह आमतौर पर बिल्डआउट चलाने का सबसे अच्छा तरीका है जो सिस्टम पायथन (या कोई अन्य पायथन जो है जिसे आपने पहले से ही सिस्टम चौड़ा स्थापित किया है) का उपयोग कर सकते हैं।

मैं आप अपने सॉफ़्टवेयर के लिए स्थापना के निर्देश के virtualenv भाग का उपयोग कर बनाने के सुझाव देते हैं।

+0

इस प्रस्ताव के लिए धन्यवाद, मैं इस तरह से खुदाई होगा। –

1

इसे एक ही चरण के रूप में करने का कोई तरीका नहीं है, लेकिन दो चरणों की प्रक्रिया के रूप में करना आसान है।

उपयोग:

python bootstrap.py 
./bin/buildout install cython 
./bin/cpy bootstrap.py 
./bin/cpy ./bin/buildout 

buildout इस तरह एक अस्पष्ट विकल्प जो कोई भी कभी भी के बारे में बातचीत इंस्टॉल का समर्थन करता है, लेकिन आप उपयोग कर सकते हैं क्योंकि, कारण यह संभव है:

[buildout] 
parts = deps py # <---- Notice we don't depend on cython here 
eggs = 
    whatever 
    kdist 
    nark 
    kivy # <--- But we do have a module that requires cython to build 
develop = 
    . 
    lib/nark 
    lib/kivy-dist 

[cython] # <---- By calling ./bin/buildout install cython we trigger this 
recipe = zc.recipe.egg:script 
parts = cython-py 
interpreter = cpy # <--- Which makes our dummy ./bin/cpy 
eggs = 
    cython 
    pyinstaller 

[deps] 
recipe = zc.recipe.egg:eggs 
eggs = ${buildout:eggs} 

[py] 
recipe = zc.recipe.egg:script 
interpreter = py 
eggs = ${buildout:eggs} 

इस दृष्टिकोण के बारे में प्यारी बात यह है कि बिल्डिंग बिल्डआउट दूसरी बार दिन के अंत में बिन निर्देशिका साफ़ करता है, तो आपको एक बिन निर्देशिका के साथ छोड़ दिया जाता है इस तरह उक्स:

$ ls bin/ 
buildout garden py 

नहीं बचे हुए संकुल कि या अपने virtualenv में चारों ओर लटका नहीं हो सकता है और ऊपर पेंच बातें बाद में। यही कारण है कि हम पहले स्थान पर बिल्डआउट का उपयोग क्यों कर रहे हैं?

... जाहिर है, अगर आप cython चारों ओर मस्ती करना चाहते हैं, यह शीर्ष पर निर्भरता में छड़ी के साथ-साथ juts।

+0

तो शांत है कि पैरामीटर के बारे में के बारे में पता नहीं था और यह गायब टुकड़ा मैं के लिए (हमेशा सभी भागों पुनर्निर्माण नहीं करने के लिए buildout चलने के दौरान) के लिए देख रहा था। ग्रेसियस! –

2

मैं आज यह नुस्खा https://pypi.python.org/pypi/mr.cython/1.0 जो समस्या का समाधान मिल गया।

तो यह उपलब्ध है यह एक extention नुस्खा के साथ cython स्थापित करके समस्या का समाधान जब buildout रन setup.py develop

समस्या प्रणाली के स्तर के रूप में स्थापित cython बिना एक cython मॉड्यूल निर्माण किया गया था।

+0

उत्तर मुझे ठीक लग रहा है। ओपी एक प्रासंगिक समाधान और संदर्भ के साथ अपने स्वयं के प्रश्न का उत्तर दे रहा है। –

+0

तथ्य यह है कि उत्तर देने के लिए मूल प्रश्न के बाद कई वर्षों बाद ओपी वापस आ गया है स्टैक ओवरफ्लो की भावना में बहुत अधिक है और अपवर्तनीय हकदार है। प्रासंगिक एक्सकेसीडी देखें: https://xkcd.com/979/ –

+0

@ हाकेनलिड: ठीक है, मैंने भी उठाया। @ ओपी: आप अपना जवाब भी स्वीकार कर सकते हैं :-) –

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