Я хочу использовать Python в комплекте с Cygwin для Windows. Мне нужно установить PyBluez, привязку Bluetooth Python. Я установил его с easy_install, без проблем. Я знаю, что он хорошо работает с версией Python для Windows, так как я установил .exe PyBluez и провел несколько тестов.
Однако я не хочу использовать версию Python для Windows, а только версию Cygwin. Но на самом деле установка с помощью easy_install или непосредственно из tarball не работает (нет сообщений об ошибках, но она не установлена полностью). Причина кажется простой: в нескольких файлах есть несколько условных выражений:
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, но и других библиотек.