Python получает неправильное значение для os.environ ["ProgramFiles"] на перспективе на 64 бита

Необходимо было бы сделать что-то как

declare @col1 as varchar(128)
declare @col2 as varchar(128)
declare @sq1 as varchar(8000) 

select @col1 = column_name from information_schema.columns where table_name = 'tablename'
and ordinal_position = @position

select @col2 = column_name from information_schema.columns where table_name = 'tablename'
and ordinal_position = @position2

set @sql = 'select ' + col1 ',' + col2 'from tablename' 

exec(@sql)
8
задан Kobi K 2 June 2015 в 16:01
поделиться

3 ответа

Со страницы Википедии :

% ProgramFiles%

Эта переменная указывает на каталог Program Files, в котором хранятся все установленные программы Windows и другие. По умолчанию в англоязычных системах используется C: \ Program Files. В 64-разрядных выпусках Windows (XP, 2003, Vista) также есть% ProgramFiles (x86)%, по умолчанию это C: \ Program Files (x86), и% ProgramW6432%, по умолчанию C: \ Program Files. Сам% ProgramFiles% зависит от того, является ли процесс, запрашивающий переменную среды, 32-разрядным или 64-разрядным (это вызвано перенаправлением 64-разрядной версии Windows-on-Windows).

Итак, чтобы получить только C: \ Program Файлы, очевидно, вы хотите проверить % ProgramW6432% .

12
ответ дан 5 December 2019 в 06:38
поделиться

Вы используете 32-разрядную версию интерпретатора Python. При использовании 32-разрядного программного обеспечения WOW64 создаст новую среду с собственными папками и подстановками.

Вы можете понять, о чем я говорю, просто запустив 64-разрядную и 32-разрядную версии командной строки:

64-разрядный cmd.exe:

C:\Documents and Settings\Administrator>set prog
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)

32-разрядный cmd.exe:

C:\WINDOWS\SysWOW64>set prog
ProgramFiles=C:\Program Files (x86)
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files

Как видно из второго отрывка выше, для получения 64-разрядных программных файлов необходимо использовать Переменная среды ProgramW6432 .

Другой подход, однако, может решить и другие проблемы, которые могут возникнуть в будущем (особенно с настройками реестра!): Просто используйте 64-битную версию Python - даже если я не знаю, где чтобы загрузить 64-битную версию 2.4.

7
ответ дан 5 December 2019 в 06:38
поделиться

Вы можете установить Python 2.5. 4 и попробовать еще раз? ОБНОВЛЕНИЕ: я имел в виду версию 2.5.4 для x64. AFAIK 2.4 был доступен только для Windows x86 и IA64, но не для x64.

Я запускаю 2.5.4 x64 на Win 7 x64 и не получаю того же результата, но я не уверен, что проблема в Python или Vista в вашем случае.

Python 2.5.4 (r254:67916, Dec 23 2008, 15:19:34) [MSC v.1400 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.environ["ProgramFiles"]
C:\Program Files
>>> print os.environ["ProgramFiles(x86)"]
C:\Program Files (x86)
>>>
5
ответ дан 5 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: