我们能不能把Cygwin的Python设为在win32平台上?(安装PyBluez)

我们能不能把Cygwin的Python设为在win32平台上?(安装PyBluez),python,windows,cygwin,Python,Windows,Cygwin,我想在Windows上使用Cygwin打包的Python。我需要安装PyBluez,一个蓝牙Python绑定。我用easy_安装,没问题。我知道它与Windows版本的Python配合得很好,因为我安装了PyBluez的.exe并进行了一些测试 但是,我不想使用Windows版本的Python,而是Cygwin版本的Python。但实际上,使用easy_install或直接从tarball进行的安装效果并不好(没有错误消息,但尚未完全安装)。原因似乎很简单:在几个文件中,有一些条件语句: if

我想在Windows上使用Cygwin打包的Python。我需要安装PyBluez,一个蓝牙Python绑定。我用easy_安装,没问题。我知道它与Windows版本的Python配合得很好,因为我安装了PyBluez的.exe并进行了一些测试

但是,我不想使用Windows版本的Python,而是Cygwin版本的Python。但实际上,使用easy_install或直接从tarball进行的安装效果并不好(没有错误消息,但尚未完全安装)。原因似乎很简单:在几个文件中,有一些条件语句:

if sys.platform == 'win32':
...
elif sys.platform == 'linux2':
...
elif sys.platform == 'darwin':
...
不幸的是,当我为Cygwin启动Python时,平台是:

$ python

>>> import sys
>>> sys.platform
'cygwin'
有趣的是,当我们从Cygwin启动Python for Windows时,要检查的是我们有哪个平台:

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

>>> import sys
>>> sys.platform
'win32'
我们可以修改PyBluez库中的一些Python文件,以便它们可以同时考虑“win32”和“cygwin”:

if sys.platform == 'win32' or sys.platform == 'cygwin':
...
不幸的是,1)这意味着修改一些文件,2)这是不够的:在PyBluez的情况下,当我导入库时,我们在_init__uz.py文件中有:

if sys.platform == "win32":
    _dbg("trying widcomm")
    have_widcomm = False
    dll = "wbtapi.dll"
    sysroot = os.getenv ("SystemRoot")
    ...
在启动Python for Windows时正确定义了os.getenv(“SystemRoot”),但没有使用Python for Cygwin定义

因此,我的问题是:有没有一种简单的方法可以欺骗PythonforCygwin,使其认为它是从win32平台启动的,具有所有正确的所需环境,而不必手动修改库设置文件

也许根本不可能?(两个版本都在Windows上,但编译方式不同)


这个问题不仅限于PyBluez的安装,还包括其他类型的库。

我遇到了类似的问题,并成功地通过将python添加到我应用程序中的第一个python文件(例如,init.py或类似文件)来欺骗python

import sys
sys.platform='linux'
不确定它是否对你有用,但需要一些尝试