Форум сайта python.su
Андрей СветловСорри, я немного ошибся в предыдущем сообщении. Изменили platform.machine, а не platform.architecture. platform.architecture по-прежнему будет возвращать разрядность интерпретатора. Вобщем, изменение вполне оправданное.
за информацию о 2.7/3.2 спасибо, не знал.
Только какое-то немного сомнительное решение.
Рассмотрим такую ситуацию: мне нужно подключать разные dll в зависимости от используемой архитектуры.
В старом подходе все было ясно. Теперь же прийдется делать какую-то другую проверку. Ведь если у меня 32 битный питон, то уже не столь важно, какая разрядность у самой винды - будут работать только 32 битные расширения и точка.
Андрей СветловТут вы правы, переменные окружения, порой, могут принести немало сюрпризов. Но, если правильно подойти к их использованию, то проблем можно избежать. Конкретно в этом случае можно сделать вот так:
К переменным окружения отношусь несколько настороженно. При запуске дочернего процесса они, конечно, наследуются по умолчанию. Но вместе с тем запускающий процесс может установить их как душа пожелает или вообще сбросить. Получится, что ваш код имеет шанс неправильно отработать только из-за того, что криворукий программист сделал несовсем корректную заускалку. Выяснение проблемы может быть непростым, а все что вы услышите будет звучать как “программа ххх не работает, если я вызываю ее через subprocess”. Поверьте, я такое не раз видел.
import os, platform
if os.environ['PROCESSOR_ARCHITEW6432'] and platform.architecture()[0] == "32bit":
print "WOW64"
elif platform.architecture()[0] == "64bit":
print "AMD64"
else:
print "x86"
Отредактировано (Июль 12, 2010 11:35:16)
Офлайн
Vaderда, так - лучше
Сорри, я немного ошибся в предыдущем сообщении. Изменили platform.machine, а не platform.architecture. platform.architecture по-прежнему будет возвращать разрядность интерпретатора. Вобщем, изменение вполне оправданное.
Офлайн