Можем ли мы обмануть Python для Cygwin так, чтобы он работал на платформе win32? (для установки PyBluez)

Я хочу использовать 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, но и других библиотек.

6
задан Cœur 29 December 2016 в 14:41
поделиться