python - पायथन में 64 बिट ओएस (विंडोज़) का पता लगाएं




9 Answers

मुझे लगता है कि प्रोग्राम प्रोग्राम फ़ोल्डर के लिए आपको os.environ['PROGRAMFILES'] प्रोग्राफाइल os.environ['PROGRAMFILES'] में देखना चाहिए।

python windows 64bit

क्या किसी को पता है कि मैं कैसे पता लगाऊंगा कि विंडोज़ पाइथन के तहत क्या संस्करण है। मुझे इसे प्रोग्राम फ़ाइलों के लिए सही फ़ोल्डर का उपयोग करने के तरीके के रूप में जानना होगा।

बहुत धन्यवाद




64 बिट विंडोज़ पर चल रहे हैं, तो उपरोक्त सभी को संकलित करने के लिए ठीक से पता लगाने के लिए यहां आया था।

नीचे 64 बिट विंडोज़ पर चलने पर 32 बिट प्रोग्राम फाइल फ़ोल्डर प्राप्त करने के लिए एक फ़ंक्शन, और 64 बिट प्रोग्राम फ़ाइलें फ़ोल्डर प्राप्त करने के लिए एक फ़ंक्शन का परीक्षण करने के लिए आपको एक फ़ंक्शन मिलेगा; सभी 32 बिट या 64 बिट पायथन चलाने के बावजूद। 32 बिट पायथन चलाते समय, अधिकांश चीजें 64 बिट पर चलने पर 32 बिट की तरह रिपोर्ट करती हैं, यहां तक ​​कि os.environ['PROGRAMFILES']

import os

def Is64Windows():
    return 'PROGRAMFILES(X86)' in os.environ

def GetProgramFiles32():
    if Is64Windows():
        return os.environ['PROGRAMFILES(X86)']
    else:
        return os.environ['PROGRAMFILES']

def GetProgramFiles64():
    if Is64Windows():
        return os.environ['PROGRAMW6432']
    else:
        return None

नोट : हाँ, यह थोड़ा हैकिश है। अन्य सभी विधियों जिन्हें "केवल काम करना चाहिए", 64 बिट विंडोज़ पर 32 बिट पायथन चलाने पर काम नहीं करते हैं (कम से कम विभिन्न 2.x और 3.x संस्करणों के लिए मैंने कोशिश की है)।

संपादन:
2011-09-07 - इस नोटिश विधि को ठीक से क्यों काम करता है इसके बारे में एक नोट जोड़ा गया।




इनमें से कई प्रस्तावित समाधान, जैसे platform.architecture (), विफल हो जाते हैं क्योंकि उनके परिणाम इस बात पर निर्भर करते हैं कि आप 32-बिट या 64-बिट पायथन चला रहे हैं या नहीं।

मुझे मिली एकमात्र विश्वसनीय विधि os.environ ['PROGRAMFILES (X86)'] के अस्तित्व की जांच करना है, जो दुर्भाग्य से हैकिश है।







विषय पंक्तियां 64 या 32 बिट ओएस का पता लगाने के बारे में पूछती हैं, जबकि शरीर प्रोग्रामफाइल के स्थान को निर्धारित करने के बारे में बात करता है। उत्तरार्द्ध में यहां कुछ व्यावहारिक उत्तर हैं। मैं StartMenu, डेस्कटॉप इत्यादि को संभालने के लिए सामान्यीकृत एक और समाधान जोड़ना चाहता हूं, साथ ही प्रोग्रामफाइल: स्टार्ट मेनू प्रोग्राम निर्देशिका का पथ कैसे प्राप्त करें?




बस इस पुराने धागे को अपडेट करने के लिए - ऐसा लगता है कि मंच मॉड्यूल अब सही आर्किटेक्चर की रिपोर्ट करता है (कम से कम, पायथन 2.7.8 में):

c:\python27\python.exe -c "import platform; print platform.architecture(), platform.python_version()"
('32bit', 'WindowsPE') 2.7.6

c:\home\python278-x64\python.exe -c "import platform; print platform.architecture(), platform.python_version()"
('64bit', 'WindowsPE') 2.7.8

(क्षमा करें मेरे पास पहले जवाब पर टिप्पणी करने का प्रतिनिधि नहीं है जो अभी भी गलत होने का दावा करता है :)




आयात मंच

platform.architecture () [0]

यह सिस्टम आर्किटेक्चर के आधार पर '32 बिट' या '64 बिट' वापस कर देगा।




 import _winreg
 def get_registry_value(key, subkey, value):
   key = getattr(_winreg, key)
   handle = _winreg.OpenKey(key, subkey )
   (value, type) = _winreg.QueryValueEx(handle, value)
   return value

 windowsbit=cputype = get_registry_value(
        "HKEY_LOCAL_MACHINE",
        "SYSTEM\\CurrentControlSet\Control\\Session Manager\\Environment",
        "PROCESSOR_ARCHITECTURE")
 print windowsbit

बस इस कोड को चलाओ

यदि आप 64 बिट विंडोज मशीन पर काम कर रहे हैं तो यह AMD64 प्रिंट करेगा

या यदि आप 32 बिट पर काम कर रहे हैं तो यह AMD32 प्रिंट करेगा

मुझे आशा है कि यह कोड पूरी तरह से इस समस्या को हल करने में मदद कर सकता है




import struct

def is64Windows():
    return struct.calcsize('P') * 8 == 64



Related