2011-05-24 19 views
20

जांचने के लिए किस आदेश का उपयोग करने के लिए उपयोग किया जाता है, मैं 32 बिट सिस्टम या 64 बिट सिस्टम के लिए मेरे पायथन को संकलित करने के लिए कोई आदेश नहीं ढूंढ पा रहा हूं।पाइथन 64 बिट या 32 बिट

मैं

अजगर

की कोशिश की और यह केवल संस्करण बताता

इसके अलावा वे लिनक्स के लिए अजगर का एक संस्करण है, लेकिन मैक के लिए दो संस्करण हैं जब मैं अजगर डाउनलोड साइट के लिए जाना यानी 32 बिट और 64 बिट।

+0

कौन सी डाउनलोड साइट? Python.org डाउनलोड साइट (http://www.python.org/download/) लिनक्स के लिए बाइनरी इंस्टॉलर प्रदान नहीं करती है, केवल मैक ओएस एक्स और विंडोज़। –

+0

मैं उस साइट पर बात कर रहा था, मैंने tar.bz2 फ़ाइल डाउनलोड की। मैं सोच रहा था कि 64 बिट के लिए मेरे पास diff tar फ़ाइल होगी या इसके समान – user2134226

+1

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

उत्तर

38

अजगर 2.6 के लिए और ऊपर, आप दस्तावेज here रूप sys.maxsize उपयोग कर सकते हैं:

import sys 
is_64bits = sys.maxsize > 2**32 

अद्यतन: मैं ध्यान दें कि मैं वास्तव में सवाल उठाया का जवाब नहीं दिया। जबकि उपर्युक्त परीक्षण आपको सटीक रूप से बताता है कि क्या दुभाषिया 32-बिट या 64-बिट आर्किटेक्चर में चल रहा है, यह इस दुभाषिया के पूर्ण सेट के बारे में सवाल का जवाब नहीं दे सकता है कि यह दुभाषिया किस प्रकार बनाया गया था और इसमें भाग लिया जा सकता था। जैसा कि सवाल में बताया गया था, उदाहरण के लिए मैक ओएस एक्स सार्वभौमिक निष्पादन योग्य के साथ यह महत्वपूर्ण है जहां एक निष्पादन योग्य फ़ाइल में एकाधिक आर्किटेक्चर के लिए कोड हो सकता है। उस प्रश्न का उत्तर देने का एक तरीका ऑपरेटिंग सिस्टम file कमांड का उपयोग करना है। अधिकांश प्रणालियों पर यह निष्पादन योग्य फ़ाइल के समर्थित आर्किटेक्चर की रिपोर्ट करेगा। यहाँ कैसे सबसे सिस्टम पर एक खोल कमांड लाइन से एक पंक्ति में यह करना है:

file -L $(python -c 'import sys; print(sys.executable)') 

ओएस एक्स 10.6 पर डिफ़ॉल्ट सिस्टम अजगर का उपयोग करना, उत्पादन होता है:

/usr/bin/python: Mach-O universal binary with 3 architectures 
/usr/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64 
/usr/bin/python (for architecture i386): Mach-O executable i386 
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc 

एक Linux सिस्टम पर:

/usr/bin/python: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, stripped 

Btw, यहाँ क्यों platform इस उद्देश्य के लिए विश्वसनीय नहीं है, इसका एक उदाहरण। फिर प्रणाली अजगर का उपयोग कर ओएस एक्स 10.6 पर:

$ arch -x86_64 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32' 
64bit True 
$ arch -i386 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32' 
64bit False 
+2

मुझे लगता है कि एक पॉइंटर (बाइट्स में) के आकार की जांच करना प्लेटफॉर्म पर इसका परीक्षण करने का सबसे विश्वसनीय/सुसंगत तरीका है - बस 'आयात ctypes', और 'ctypes.sizeof (ctypes.c_void_p)' के आउटपुट की जांच करें (जो करेगा 32-बिट के लिए '4' बाइट, और 64-बिट सिस्टम के लिए' 8')। – Breakthrough

+0

sys मॉड्यूल में निर्मित है और हमेशा मौजूद है। सीटीपीएस का आयात और उपयोग आमतौर पर अधिक महंगा होता है और कुछ प्लेटफॉर्म पर असफल हो सकता है। –

6
import platform 
platform.architecture()[0] 
#'32bit' 
+5

क्षमा करें, जैसा कि 'प्लेटफ़ॉर्म' कमांड के लिए वर्तमान पायथन दस्तावेज़ में उल्लेख किया गया है, प्लेटफ़ॉर्म। आर्किटेक्चर परीक्षण सभी प्लेटफ़ॉर्म पर निष्पादन समय पर विश्वसनीय नहीं है, विशेष रूप से, ओएस एक्स सार्वभौमिक 32-बिट और 64- ओपी द्वारा पूछे गए बिट आर्क्स। यह ओपी के सवाल का जवाब भी नहीं देता जैसा मैंने अपने अद्यतन उत्तर में देखा है। –

+0

मुझे इसके बारे में पता नहीं था। उसे इंगित करने के लिए धन्यवाद! – Bentley4

1

खुला cmd तो टाइप अजगर तो दो पंक्तियों

आयात मंच

मंच निम्नलिखित .architecture()

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