我收到了一个使用标准库中的 fcntl
模块的 Python 项目(如果这很重要,它恰好是一个 Django 项目),该模块似乎仅在 Linux 上可用。当我尝试在我的 Windows 机器上运行它时,它以 ImportError
停止,因为这里不存在这个模块。
有什么方法可以让我对程序进行一些小改动以使其在 Windows 上运行?
原文由 Ram Rachum 发布,翻译遵循 CC BY-SA 4.0 许可协议
我收到了一个使用标准库中的 fcntl
模块的 Python 项目(如果这很重要,它恰好是一个 Django 项目),该模块似乎仅在 Linux 上可用。当我尝试在我的 Windows 机器上运行它时,它以 ImportError
停止,因为这里不存在这个模块。
有什么方法可以让我对程序进行一些小改动以使其在 Windows 上运行?
原文由 Ram Rachum 发布,翻译遵循 CC BY-SA 4.0 许可协议
fcntl 模块仅用于锁定固定文件,因此假设您不尝试多重访问,这可能是一个可接受的解决方法。将此模块放在您的 sys.path
中,它应该可以作为官方 fcntl 模块工作。
尝试仅在 Windows 中 将此模块( source ) 用于开发/测试目的。
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.py
模块放在您要使用的 Python 解释器的 site-packages
目录中。例如, %LOCALAPPDATA%\Programs\Python\Python310\lib\site-packages\fcntl\
。这就是我的 site-packages
生活的地方。检查 Tutorialspoint 找到你的位置。
原文由 Muhammad Soliman 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
4 回答3.8k 阅读✓ 已解决
2 回答5.9k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
Windows 上
fcntl
的替代品是win32api
调用。用法完全不同。这不是您可以翻转的开关。换句话说,将
fcntl
-user 模块移植到 Windows 并非易事。它要求您分析每个fcntl
调用的确切作用,然后找到等效的win32api
代码(如果有)。还有可能使用
fcntl
的某些代码没有 Windows 等效项,这将需要您更改模块 api,并且可能需要使用您要移植的模块来更改程序的结构/范式。如果您提供有关
fcntl
调用的更多详细信息,人们可以找到 Windows 等效项。