Я хочу использовать Python, упакованный с Cygwin, в Windows. Мне нужно установить PyBluez, привязку Bluetooth Python. Установил через easy_install, проблем нет. Я знаю, что он хорошо работает с версией Python для Windows, так как я установил .exe для PyBluez и провел несколько тестов.
Однако я хочу использовать не версию Python для Windows, а версию Cygwin. Но на самом деле установка с помощью easy_install или напрямую из тарболла работает плохо (нет сообщений об ошибках, а устанавливается не полностью). Причина кажется простой: в нескольких файлах есть несколько условных операторов:
if sys.platform == 'win32':
...
elif sys.platform == 'linux2':
...
elif sys.platform == 'darwin':
...
К сожалению, когда я запускаю Python для Cygwin, платформа следующая:
$ python
>>> import sys
>>> sys.platform
'cygwin'
Интересно проверить, какая платформа у нас есть, когда мы запускаем Python для Windows. от Cygwin:
$ /cygdrive/d/Programs/Python26/python -i
>>> import sys
>>> sys.platform
'win32'
У нас может возникнуть идея изменить некоторые файлы Python в библиотеке PyBluez, чтобы они могли учитывать как «win32», так и «cygwin»:
if sys.platform == 'win32' or sys.platform == 'cygwin':
...
К сожалению, 1) это означает изменение некоторых файлов и 2 ) недостаточно: в случае с PyBluez, когда я импортирую библиотеку, мы имеем в файле __init__.py:
if sys.platform == "win32":
_dbg("trying widcomm")
have_widcomm = False
dll = "wbtapi.dll"
sysroot = os.getenv ("SystemRoot")
...
os.getenv("SystemRoot") корректно определяется при запуске Python для Windows, но не определяется с помощью Python для Cygwin.
Итак, мой вопрос: есть ли простой способ обмануть Python для Cygwin, думая, что он запускается с платформы win32 со всей необходимой средой, без необходимости вручную изменять файлы установки библиотеки?
Может быть, это вообще невозможно? (Обе версии для Windows, но компилируются по-разному).
Вопрос касается не только установки PyBluez, но и других библиотек.