我收到了一个使用fcntl
标准库中的模块的Python项目(如果需要的话,它恰好是Django项目),该库似乎仅在Linux上可用。当我尝试在Windows计算机上运行它时,它会以停止ImportError
,因为此模块在此处不存在。
我有什么办法可以对程序进行一些小的更改以使其在Windows上运行?
我收到了一个使用fcntl
标准库中的模块的Python项目(如果需要的话,它恰好是Django项目),该库似乎仅在Linux上可用。当我尝试在Windows计算机上运行它时,它会以停止ImportError
,因为此模块在此处不存在。
我有什么办法可以对程序进行一些小的更改以使其在Windows上运行?
Answers:
fcntl模块仅用于锁定固定文件,因此,假设您不尝试多路访问,这是可以接受的解决方法。将此模块放在您的中sys.path
,它应该可以作为正式的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
尽管这不能立即为您提供帮助,但是还有一种可以与Unix(fcntl)和Windows(win32 api调用)一起使用的替代方法,称为:portalocker
它将自己描述为跨平台(posix / nt)API,用于Python的羊群式文件锁定。它基本上将fcntl映射到win32 api调用。
现在可以将http://code.activestate.com/recipes/65203/上的原始代码作为单独的软件包安装-https: //pypi.python.org/pypi/portalocker
fcntl
除了锁定文件外,还可以做更多的事情。