2011-02-24 14 views
5

नहीं मिल सकता है मैं एक एक्सटेंशन अनुभाग, जो कुछ इस तरह दिखता साथ एक distutils सेटअप स्क्रिप्ट है:distutils Python.h

from distutils.core import setup, Extension 

my_module = Extension('my_module', 
       sources = ['my_file.c', 'my_other_file.c']) 

setup (name = 'my_module', 
     version = '1.0', 
     description = 'My module', 
     ext_modules = [my_module]) 

setup.py build चल रहा है पर मेरे मैक ठीक काम करता है। जब मैं एक डेबियन मशीन के लिए ले जाते हैं, यह विफल रहता है:

error: Python/Python.h: No such file or directory 

मैं python2.6 और python2.6-dev स्थापित किया है, और फ़ाइल /usr/include/Python2.6 पर मौजूद है।

आदेश यह समस्या फ़ाइल के लिए कार्यान्वित:

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.6 -c my_module.c -o -build/XYZ/my_module.o

तो यह हेडर फाइल के स्थान में गुजर रहा है।

मैक लिनक्स बनाम पर्यावरण के बीच केवल स्पष्ट अंतर जीसीसी-4.2 जीसीसी-4.4 और अजगर 2.7 बनाम अजगर 2,6

विचार बनाम है?

संपादित करें:

प्रश्न में सी फ़ाइल में:

#include <Python/Python.h> 
#include <Python/structmember.h> 
+0

क्या आप उन दो पंक्तियों को केवल '# शामिल "Python.h" में बदलने की कोशिश कर सकते हैं और फिर संकलित कर सकते हैं? – YOU

+0

मैंने किया, और ऐसा लगता है कि इसे ठीक करता है। कोई विचार यह मैक पर 'पायथन/पायथन एच' के साथ क्यों काम करेगा लेकिन लिनक्स पर नहीं? – Joe

+0

मुझे लगता है कि यह बस स्थापना विकल्प के आधार पर निर्देशिका संरचना भिन्न है, लिनक्स के पास Python.h है /usr/include/python2.6/ के तहत लेकिन मैक शायद /usr/include/Python/Python.h के तहत है, लेकिन मेरे पास नहीं है मैक, तो यह कहना मुश्किल है कि मेरा मानना ​​सही है या नहीं। – YOU

उत्तर

5

अपने मॉड्यूल में हो सकता है, तो आप include "Python.h" बजाय "Python/Python.h" करने की जरूरत है?

या आप निर्यात पथ को शामिल करने का प्रयास कर सकते हैं, और जीसीसी या जी ++ के साथ फिर से संकलन करने का प्रयास कर सकते हैं?

export C_INCLUDE_PATH=/usr/include/python2.6:$C_INCLUDE_PATH 
export CPLUS_INCLUDE_PATH=/usr/include/python2.6:$CPLUS_INCLUDE_PATH 
+0

काफी विपरीत! मूल फ़ाइल में 'पायथन/पायथन एचएच' था (संपादित देखें)। मैंने इसे बदल दिया 'बस 'शामिल करें। ऐसा लगता है कि दोनों प्लेटफार्मों पर काम करता है। उस पर कोई टिप्पणी? – Joe

+0

+1 जो निर्दोष था! * क्या आप मुझे एक तरह की "जीसीसी कॉन्फ़िगरेशन चीटशीट" या ऐसा कुछ बता सकते हैं? –

1

मेरे मामले में, मैं python3-देव याद आ रही थी, sudo apt-get install python3-dev यह तय की।