2013-12-14 5 views
9

नए Ubuntu/डेबियन संस्करण के अंतर्गत, libpython2.7.so/usr/lib/i386-linux-gnu/libpython2.7.so या /usr/lib/x86_64-linux-gnu/libpython2.7.so, आदि इससे पहले किया जा रहा है, वे /usr/lib/libpython2.7.so में पाया जा सकता है, कोई फर्क नहीं पड़ता वास्तुकला। मैंने अन्य वितरणों की जांच नहीं की है। मैं पाइथन के साथ libpython2.7.so का पथ कैसे ढूंढूं?वितरण स्वतंत्र libpython पथ

+0

क्या आप 'libpython का पता लगाने' या कुछ और ढूंढ रहे हैं? – janos

+0

आपका 'ldd/usr/local/bin/python' आपको क्या दिखाता है? – Arovit

+0

'libpython का पता लगाएं' केवल इस एकल फ़ाइल से बहुत अधिक पाता है, और मैं प्रोग्रामेटिक रूप से पथ ढूंढना चाहता हूं और इसे cmake पर आपूर्ति करना चाहता हूं। 'ldd/usr/local/bin/python' कोई ऐसी फ़ाइल या निर्देशिका नहीं देता है, और 'ldd/usr/bin/python' कई लाइब्रेरी फाइलें देता है, लेकिन' libpython2.7.so' उनमें से एक नहीं है। – Psirus

उत्तर

0

मुझे लगता है कि आप इस फ़ाइल के खिलाफ लिंक करना चाहते हैं। पाइथन आमतौर पर pkgconfig जानकारी के साथ संकलित करने में मदद के लिए स्थापित किया जाता है। विशेष रूप से .so फ़ाइल के लिए, आपको pkg-config --libs python-2.7 का उपयोग करना चाहिए। अजगर से:

import subprocess 
subprocess.check_output(["pkg-config", "--libs", "python-2.7"]) 

केवल झंडा दिखाया -lpython2.7 है, तो आप /etc/ld.so.conf पढ़ने डिफ़ॉल्ट स्थान हैं, जिनमें लिंकर अपने पुस्तकालयों के लिए लग रहा है देखने के लिए विचार करना चाह सकते।

7

pkg-config का उपयोग करना सबसे अच्छा विकल्प नहीं है - यह पाइथन के विभिन्न इंस्टॉलेशन के बीच अंतर नहीं करेगा, केवल सिस्टम स्थापना लौटाएगा। libpythonX.Y.so के स्थान की खोज के लिए आप पाइथन निष्पादन योग्य का उपयोग कर बेहतर हैं।

अजगर अंदर से

:

from distutils import sysconfig; 
    print sysconfig.get_config_var("LIBDIR") 

या एक Makefile अंदर:

PYTHON_LIBDIR:=$(shell python -c 'from distutils import sysconfig; print sysconfig.get_config_var("LIBDIR")') 

इस से जो कुछ भी पायथन निष्पादन पहले $PATH में है और इस तरह है स्थान की खोज करेंगे एक से अधिक अजगर प्रतिष्ठानों हैं काम करेंगे सिस्टम पर

इस बिंदु को इंगित करने के लिए Niall Fitzgerald पर क्रेडिट।

+6

यह मुझे '/ usr/lib' देता है, जबकि यह'/usr/lib/x86_64-linux-gnu' –

+1

में स्थित है, मेरे लिए काम नहीं करता है। मार्को सुल्ला ने एक ही समस्या की ओर इशारा किया। –

+0

वही समस्या। :(वास्तव में यह करने का कोई तरीका था। – Alec

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