के साथ साझा लाइब्रेरी निर्भरता मैं distutils के लिए एक नौसिखिया हूँ और मुझे एक समस्या है जो वास्तव में मुझे अटक गया है। मैं एक पैकेज है जिसमें एक्सटेंशन की आवश्यकता है संकलन कर रहा हूँ, इसलिए मैं विस्तार इस प्रकार है:distutils
a_module = Extension(
"amodule",
["initmodule.cpp"],
library_dirs=libdirs,
extra_objects = [
"unix/x86_64/lib/liba.so"
"unix/x86_64/lib/lib.so",
"unix/x86_64/lib/libc.so"],
)
मैं तो सेटअप विधि चलाएँ:
setup(name="apackage", version="7.2",
package_dir = {'':instdir+'/a/b/python'},
packages=['apackage','package.tests'],
ext_modules=[hoc_module]
)
पैकेज वितरण ठीक से किया जाता है और मैं यह कर सकते हैं "अजगर सेटअप "स्थापित .py ठीक लेकिन जब मैं कोशिश करते हैं और अपने पैकेज आयात मैं एक त्रुटि ImportError: liba.so.0: cannot open shared object file: No such file or directory
मुझे लगता है कि जब मैं अपने LD_LIBRARY_PATH को liba.so.0 के स्थान जोड़ने के कार्यक्रम ठीक चलाना चाहते हैं। दुर्भाग्य से मैंने इन मॉड्यूल को नहीं लिखा है और संकलन की अच्छी समझ नहीं है। मैं इसका आनंद लेने के लिए कई दिनों तक इसे समझने की कोशिश कर रहा हूं।
अद्यतन: मैं extra_objects को liba.a गुजर, libb.a आदि फ़ाइलों की कोशिश की लेकिन यह काम नहीं किया है, तो निम्न errror पैदा: liba.a: प्रतीक नहीं पढ़ सकता है: गलत मान collect2: ld 1 निकास की स्थिति लौटा दी। जो मैं करने की कोशिश कर रहा हूं वह एक पायथन मॉड्यूल पैकेज है जिसके लिए लाइब्रेरी को संकलित करने की आवश्यकता होती है जो स्वयं अन्य पुस्तकालयों पर निर्भर करता है जिन्हें मुझे पैकेज में शामिल करने की आवश्यकता होती है। मुझे संदेह है कि मेरी समस्या इस के समान ही है: http://mail.python.org/pipermail/distutils-sig/2009-February/010960.html लेकिन वह एक हल नहीं किया गया था, मैंने सोचा था कि शायद दो साल पुराना एक प्रस्ताव मिला है?
अद्यतन 2: अभी के लिए मैं कर रहा द्वारा इस समाधान कर लिया है:
data_files=[('/usr/local/lib', glob.glob('unix/x86_64/lib/*'))]
कहना है कि, मैं पुस्तकालयों मैं/usr/स्थानीय/lib में कोई इच्छित सामग्री कॉपी कर रहा हूँ। हालांकि, मैं इस समाधान के साथ बेहद खुश नहीं हूं, क्योंकि कम से कम मेरे उपयोगकर्ताओं को रूट विशेषाधिकार रखने की आवश्यकता नहीं है और यह भी क्योंकि यह अभी भी Redhat distros काम नहीं कर सकता है। तो अगर कोई इस फिक्स से बेहतर कुछ सुझाव दे सकता है तो कृपया मुझे बताएं।
शानदार उत्तर, इस http: // sebsauvage के साथ आपके उत्तर को जोड़कर। नेट/पायथन/mingw.html मैं आवश्यक मॉड्यूल को आवश्यक तरीके से बनाने में सक्षम था। बहुत बहुत धन्यवाद। –
कोई समस्या नहीं, मुझे खुशी है कि मैं –
FYI की सहायता कर सकता हूं: '-R' $ ORIGIN /../ lib/''विकल्प जोड़ने के बजाय, आप' runtime_library_dirs =" $ ORIGIN /../ lib/"आपकी 'विस्तार' परिभाषा के लिए (यह अभ्यास में एक ही चीज़ है)। –