windows - Kan vi narre Python for Cygwin som værende på win32 platformen? (for at installere PyBluez)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil bruge Python pakket med Cygwin på Windows. Jeg skal installere PyBluez, en Bluetooth Python-binding. Jeg installerede det med easy\_install, ikke noget problem. Jeg ved, at det fungerer godt med Windows-versionen af ​​Python, som jeg gjorde .exe-installationen af ​​PyBluez og lavede nogle tests.


Men jeg vil ikke bruge Windows-versionen af ​​Python, men den fra Cygwin. Men faktisk fungerer installationen med easy\_install eller direkte fra tarball ikke godt (ingen fejlmeddelelser, men den er ikke fuldt installeret). Årsagen synes simpel: i flere filer er der nogle betingede udsagn:


if sys.platform == 'win32':
...
elif sys.platform == 'linux2':
...
elif sys.platform == 'darwin':
...


Desværre, når jeg starter Python for Cygwin, er platformen:


$ python

>>> import sys
>>> sys.platform
'cygwin'


Hvad er interessant at kontrollere, er hvilken platform vi har, når vi starter Python for Windows fra Cygwin:


$ /cygdrive/d/Programs/Python26/python -i

>>> import sys
>>> sys.platform
'win32'


Vi kunne få ideen om at ændre nogle Python-filer i PyBluez-biblioteket, så de kunne tage hensyn til både 'win32' og 'cygwin':


if sys.platform == 'win32' or sys.platform == 'cygwin':
...


Desværre 1) betyder det at ændre nogle filer, og 2) det er ikke nok: i tilfælde af PyBluez, når jeg importerer biblioteket, har vi i filen \_\_init\_\_.py:


if sys.platform == "win32":
    \_dbg("trying widcomm")
    have\_widcomm = False
    dll = "wbtapi.dll"
    sysroot = os.getenv ("SystemRoot")
    ...


os.getenv ('SystemRoot') er korrekt defineret, når du starter Python for Windows, men er ikke defineret med Python for Cygwin.


Så er mit spørgsmål: Er der en nem måde at lure Python for Cygwin på, fordi den er lanceret fra en win32-platform med alt det rigtige nødvendige miljø uden at skulle ændre bibliotekets installationsfiler for hånd?


Måske er det slet ikke muligt? (Begge versioner er på Windows, men de er sammensat anderledes).


Spørgsmålet er ikke begrænset til installationen af ​​PyBluez, men også til andre slags biblioteker.

Bedste reference


Jeg havde et lignende problem og lykkedes at narre python for at gøre dette ved at tilføje til den første pythonfil i min app, f.eks. init .py eller lignende


import sys
sys.platform='linux'


Ikke sikker på om det vil fungere for dig, men noget at prøve