Tout d'abord, je ne pense pas que cette question soit un duplicata de
Détecter 64 bits OS (Windows) à Python
parce que je n'ai pas été résolu complètement. P>
La seule réponse approche est: p>
Utiliser
sys.getwindowsversion () code> ou l'existence de programfiles (x86) (
si 'programfiles (x86)' in os.environ code>) p> blockQuote>
mais: p>
- Est-ce que la variable de l'environnement Windows
programmures (x86) code> fiable? Je crains que quiconque puisse la créer, même s'il n'est pas présent sur le système. Li>
- Comment utiliser
sys.getwindowsversion () code> afin d'obtenir l'architecture? LI> ul>
concernant
sys.getwindowsversion () code>:
Le lien http://docs.python.org/library/sys.html# Sys.getwindowsversion
nous conduit à http://msdn.microsoft.com /en-us/library/ms724451%28vs.85%29.aspx
Mais je ne vois rien de liaison à l'architecture (32bit / 64bit).
De plus, l'élément de plate-forme dans le tuple retourné semble être indépendant de l'architecture. P>Une dernière note: je recherche une solution utilisant Python 2.5 et une version Windows à partir de Windows XP P>
Merci! P>
EDIT:
Les informations pertinentes sont disponibles ici
http://msdn.microsoft.com/ EN-US / Bibliothèque / MS724340% 28V = vs.85% 29.aspx
Mais comment puis-je obtenir cela avec python? p>EDIT2: Sur une fenêtre de 64 bits, avec un interprète de python 32 bits: p>
- OS.Environ ["Processor_architecture"] retourne
- 'x86' li> ul> li>
- plate-forme.architecture () renvoie
- ('32bit', 'windowspe') li> ul> li> ul>
5 Réponses :
1 Une autre option (sondage WMI pour Osarchitecture):
Si vous installez pywin32 a > et le module Python WMI sur le dessus Vous devriez pouvoir faire (mais Seulement de Windows Vista et Up!): P>
import wmi c = wmi.WMI() for os in c.Win32_OperatingSystem(): print os.osarchitecture
Malheureusement, Pywin32 n'est pas disponible pour Python 2.5 et AMD64 Architecture sourceforge.net/projects/pywin32/files < / a>
OK, a ajouté une autre option (2) - non testée car je n'ai pas de système d'exploitation Windows 64 bits autour.
Merci Christophe, cela devrait bien fonctionner! Mais je préfère une solution de peu de Luke parce que je n'ai pas besoin d'importer un module spécifique Windows
Ces variables montrent votre statut d'exécution actuel sous Windows:
Ça a l'air bien! Savez-vous si un utilisateur peut modifier ces variables d'environnement (événement inconsciemment)?
Je pense que le module de plate-forme est vraiment le meilleur moyen d'obtenir cette information. Je ne vois pas où obtenir une réponse ferme sur des fenêtres 32/64 bits d'ici, donc Je suggère ceci: p> ou, si vous devez savoir quelle saveur de Python vous exécutez (comme vous pouvez exécuter X32 Python sous X64 Windows): P> < Pré> xxx pré> p>
Platform.Machine () CODE> Retourne maintenant 32/64 bit sous
i386 / amd64 code>.
plate-forme.uname () code> retournera la version et l'architecture du système d'exploitation dans un seul appel.
J'espère que cela peut résoudre le problème
Je l'ai essayé sur mes fenêtres 8.1 64 bits et retourne la valeur vient d'exécuter ce code
Si vous travaillez sur une machine Windows 64 bits, il s'agira d'AMD64 p> ou si vous travaillez sur 32 bits, il imprimera AMD32 P> J'espère que ce code peut aider à résoudre ce problème complètement p> p>
C'est la même chose que d'obtenir une variable d'environnement. La seule différence est qu'elle n'est pas affectée par une commande définie.
Voici une belle commande Python One-Liner.
Que voulez-vous savoir exactement? La taille de l'architecture ou l'endroit où les programmes sont stockés?
Comme le dit le titre de la question: Taille de l'architecture et de la version
Ces réponses sont correctes et la solution à, c'est simplement si vous exécutez un programme de 32 bits sur 64 bits, Windows émule ces données. Donc, le Winapi renvoie une version incorrecte pour vous.
Je cherche des réponses correctes indépendamment de l'architecture de la cible d'interprète Python. C'est l'architecture du système d'exploitation que je cherche.
Architecture unique sous-ensemble: Stackoverflow.com/Questtions/7491391/... 32 VS 64 Sous-ensemble: Stackoverflow.com/questions/1405913/...