2012-04-17 6 views
42

आप पाइथन को विभिन्न तरीकों से संकलित कर सकते हैं। मैं यह जानना चाहता हूं कि मेरे पायथन को किस विकल्प से संकलित किया गया था।पाइथन को संकलित किए गए विकल्पों की सूची कैसे प्राप्त करें?

कंक्रीट उपयोग-मामला: क्या मेरी पायथन रीडलाइन के साथ संकलित थी? मुझे पता है कि मैं इसे "आयात रीडलाइन" करके देख सकता हूं, लेकिन मैं अपने पायथन बाइनरी के लिए संकलन सेटिंग की एक सूची देखना चाहता हूं।

संपादित करें: मेरा मतलब है कि पायथन निष्पादन योग्य और मेरे द्वारा लिखित स्रोत कोड नहीं है।

+0

आप आम तौर पर संकलित अजगर बाईटकोड साथ काम नहीं करते चलाने - सामान्य रूप से आप अजगर स्रोत फ़ाइलों के साथ काम करते हैं। यह वास्तव में बहुत अधिक समझ में नहीं आता है, क्या आप कुछ और संदर्भ दे सकते हैं? –

+1

लैटवेयर: मुझे लगता है कि ओपी का मतलब था कि पाइथन के निष्पादन योग्य को कैसे संकलित किया गया था, मॉड्यूल – sinelaw

+0

का बाइटकोड सही नहीं है, मेरा मतलब है पायथन निष्पादन योग्य, स्पष्टता के लिए जोड़ा गया –

उत्तर

43

वहाँ प्रणाली config

import sysconfig 
print(sysconfig.get_config_vars()) 

यह रूप में अच्छी तरह से व्यक्तिगत चर प्राप्त करने के लिए एक इंटरफेस प्रदान करता है देखने के लिए एक मॉड्यूल है।

sysconfig.get_config_var('HAVE_LIBREADLINE') 

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

python2.7 से पहले, आप

import distutils.sysconfig 
print distutils.sysconfig.get_config_vars() 
+0

मैं अजगर 2.7 का उपयोग कर रहा हूं। यह वहां भी काम करता है। – mirk

+0

(गलती से मेरी मूल टिप्पणी हटा दी गई) यह 3.2 और उच्चतर (पायथन 3 में) या स्पष्ट रूप से 2.7 और उच्चतर (पायथन 2 में) पर काम करती है। मेरे 2.6.7 – sinelaw

+0

पर काम नहीं कर रहा है धन्यवाद, मैंने पहले पायथन-संस्करणों के लिए उत्तर अपडेट किया है। – mirk

21

उपयोग करने के लिए का निर्माण करने के तिमिर के जवाब पर, कॉन्फ़िगर झंडे कि वास्तव में निर्माण के दौरान इस्तेमाल किया गया लगता है, मान है आप CONFIG_ARGS की तलाश में हैं।

उदाहरण के लिए, यह एक उबंटू संकलित अजगर के लिए उत्पादन होता है:

>>> print distutils.sysconfig.get_config_var('CONFIG_ARGS') 
'--enable-shared' '--prefix=/usr' '--enable-ipv6' 
'--enable-unicode=ucs4' '--with-dbmliborder=bdb:gdbm' 
'--with-system-expat' '--with-system-ffi' '--with-fpe ctl' 
'CC=x86_64-linux-gnu-gcc' 'CFLAGS=-D_FORTIFY_SOURCE=2 -g 
-fstack-protector --param=ssp-buffer-size=4 -Wformat 
-Werror=format-security ' 'LDFLAGS=-Wl,-Bs ymbolic-functions 
-Wl,-z,relro' 
8

और एक और तरीका यह करने के लिए ... अजगर स्थापित संस्करण प्रति स्क्रिप्ट की आपूर्ति ...

ls -l /usr/bin/python*config* 
    16 Dec 21 2013 /usr/bin/python-config  -> python2.7-config 
    16 Dec 21 2013 /usr/bin/python2-config -> python2.7-config 
    33 Mar 22 18:57 /usr/bin/python2.7-config -> x86_64-linux-gnu-python2.7-config 
    16 Mar 23 03:17 /usr/bin/python3-config -> python3.4-config 
    33 Apr 11 09:15 /usr/bin/python3.4-config -> x86_64-linux-gnu-python3.4-config 
    34 Apr 11 09:15 /usr/bin/python3.4m-config -> x86_64-linux-gnu-python3.4m-config 
    17 Mar 23 03:17 /usr/bin/python3m-config -> python3.4m-config 

    python3-config --help 
    Usage: /usr/bin/python3-config --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir 

    python3-config --prefix 
    /usr 

मेरे सिस्टम में से एक के जवाब हैं:

--prefix   /usr 
--exec-prefix  /usr 
--includes   -I/usr/include/python3.4m -I/usr/include/python3.4m 
--libs    -lpthread -ldl -lutil -lm -lpython3.4m 
--cflags   -I/usr/include/python3.4m -I/usr/include/python3.4m -Wno-unused-result -Werror=declaration-after-statement -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes 
--ldflags   -L/usr/lib/python3.4/config-3.4m-x86_64-linux-gnu -L/usr/lib -lpthread -ldl -lutil -lm -lpython3.4m -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions 
--extension-suffix @[email protected] 
--abiflags   m 
--configdir  /usr/lib/python3.4/config-3.4m-x86_64-linux-gnu 

तो यदि आपको बैश स्क्रू के लिए मूल्य निर्धारित करने की आवश्यकता है आईपीटीएस और ऐसे, ये इस कमांड लाइन उपयोगिता के साथ उपलब्ध हैं।

-2

, विकल्प है कि PyPy साथ संकलित किया गया था की सूची प्राप्त करने के लिए

pypy --info 
+0

यह मेरा सवाल नहीं था। –