воскресенье, 17 апреля 2011 г.

PYTHONPATH в Windows x64

Проблема

Для удобства создания скриптов на Python-е, в т.ч. для pykd, решил воспользоваться расширением pytools для Visual Studio.

Чтобы интерпретатор Python-а находил модуль pykd без указания полного пути, добавил в переменную окружения PYTHONPATH путь к 64-х битной и 32-х битной версии расширения. В моём случае C:\WinDDK\WinDbgX64\winext и C:\WinDDK\WinDbgX86\winext соответственно. После этого интерпретатор начал падать при попытке использования модуля (похоже что происходит сбой во время загрузки pykd.pyd не соответствующей разрядности).

Вывод очевиден. Если в системе одновременно установлен Python для x86 и x64, то переменную окружения PYTHONPATH лучше не использовать.

Решение

В данном случае возможно 2 варианта:
  • Дополнительно скопировать модуль в соответствующую lib или dll директорию Python-а.
  • Модифицировать путь через реестр.
Выбор пал на второй, поскольку не хотелось дополнительно дублировать файл расширения. Но, редактирование реестра ожидаемого результата не дало:

В сети нашёл вменяемое объяснение происходящему: Python on Windows — Setting PYTHONPATH Environment Variable. Вообще-то в документации об этом сказано. Но это немного не очевидный use-case, хотя по своему удобный...

То есть, для достижения требуемого эффекта нужно:
  1. Создать новый раздел в HKLM\SOFTWARE\Python\PythonCore\version\PythonPath и/или HKLM\SOFTWARE\Wow6432Node\Python\PythonCore\version\PythonPath.
  2. В значение по умолчанию, через точку с запятой, добавить нужные пути.
Рабочая среда: Windows 7 x64, Python 2.6.6 x86/x64

Комментариев нет:

Отправить комментарий