Ram*_*hum 65 python linux windows
我收到了一个Python项目(恰好是一个Django项目,如果这很重要的话),它使用fcntl
标准库中的模块,该模块似乎仅在Linux上可用.当我尝试在我的Windows机器上运行它时,它会停止ImportError
,因为此模块在此处不存在.
我有什么方法可以对程序进行一些小改动,使其在Windows上运行?
nos*_*klo 71
fcntl
Windows上的替代品是win32api
电话.用法完全不同.它不是一些你可以翻转的开关.
换句话说,将fcntl
-heavy-user模块移植到窗口并非易事.它要求您分析每个fcntl
调用的确切内容,然后找到等效win32api
代码(如果有).
还有一些代码可能fcntl
没有等效的窗口,这需要你使用你移植的模块更改模块api和程序的结构/范例.
如果您提供有关fcntl
通话的更多详细信息,人们可以找到等效的Windows.
Muh*_*man 32
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
Run Code Online (Sandbox Code Playgroud)
小智 16
虽然这对你没有任何帮助,但有一种方法可以兼容Unix(fcntl)和Windows(win32 api调用),称为:portalocker
它将自身描述为用于Python的flock风格文件锁定的跨平台(posix/nt)API.它基本上将fcntl映射到win32 api调用.
http://code.activestate.com/recipes/65203/上的原始代码现在可以作为单独的软件包安装 - https://pypi.python.org/pypi/portalocker
归档时间: |
|
查看次数: |
91092 次 |
最近记录: |