Python Windows上的fcntl替换

Python Windows上的fcntl替换,python,windows,linux,Python,Windows,Linux,我收到了一个Python项目(如果有必要的话,它恰好是一个Django项目),它使用标准库中的fcntl模块,该模块似乎只在Linux上可用。当我尝试在我的Windows计算机上运行它时,它会以一个ImportError停止,因为此处不存在此模块 我有没有办法对程序进行一些小改动,使其在Windows上工作?Windows上的fcntl的替代品是win32api调用。用法完全不同。这并不是一个你可以随意扳动的开关 换句话说,将一个fcntl-大量用户模块移植到windows并不是件小事。它要求您

我收到了一个Python项目(如果有必要的话,它恰好是一个Django项目),它使用标准库中的
fcntl
模块,该模块似乎只在Linux上可用。当我尝试在我的Windows计算机上运行它时,它会以一个
ImportError
停止,因为此处不存在此模块


我有没有办法对程序进行一些小改动,使其在Windows上工作?

Windows上的
fcntl
的替代品是
win32api
调用。用法完全不同。这并不是一个你可以随意扳动的开关

换句话说,将一个
fcntl
-大量用户模块移植到windows并不是件小事。它要求您分析每个
fcntl
调用的具体功能,然后找到等效的
win32api
代码(如果有)

还有一种可能性是,某些使用
fcntl
的代码没有windows等效程序,这需要您更改模块api,可能还需要更改使用您正在移植的模块的程序的结构/范例


如果您提供有关
fcntl
调用的更多详细信息,人们可以找到windows等效调用。

尽管这对您没有帮助,但有一种替代方法可以同时使用Unix(fcntl)和windows(win32 api调用),称为:Portalker

它将自己描述为一个跨平台(posix/nt)API,用于Python的flock风格文件锁定。它基本上将fcntl映射到win32 api调用


位于的原始代码现在可以作为单独的软件包安装-

fcntl模块仅用于锁定锁定文件,因此假设您不尝试多重访问,这是一种可接受的解决方法。将此模块放在您的
系统路径中
,它应该可以作为正式的fcntl模块使用

尝试仅在windows中用于开发/测试目的

def fcntl(fd, op, arg=0):
    return 0

def ioctl(fd, op, arg=0, mutable_flag=True):
    if mutable_flag:
        return 0
    else:
        return ""

def flock(fd, op):
    return

def lockf(fd, operation, length=0, start=0, whence=0):
    return

代码试图用fcntl具体做什么?fcntl()可以做很多不同的事情;但这正是我所需要的。:)添加了数值常量。fcntl.F_GETFD和fcntl.F_SETFDlink似乎已断开如何将其添加到sys.path?我试着将它添加到与python脚本相同的文件夹中,但它不起作用。
fcntl
做的事情比锁定文件多得多。