阿毛
It's me !
想你所想

解决ModuleNotFoundError: No module named 'fcntl'

问题

py中引入了fcntl,import fcntl。当在windows系统下运行该py时,报错“ModuleNotFoundError: No module named ‘fcntl’”。

原因

fcntl为python标准库中的一个模块,属于Unix Specific,负责操作文件锁(https://docs.python.org/3/library/fcntl.html)。当使用python进行写文件时,如果多个进程同时写同一个文件,那么可能会存在问题,fcntl就是用来避免这个问题,使用系统锁的机制来保证同时只有一个进程写文件。很显然,这个模块是为linux系统准备,windows python中是不自带的,所以当我们在windows中运行使用了fcntl模块的py时,就会报错,模块无法找到。

解决办法

由于一般我们的项目都是直接放到linux环境下去跑的,所以不牵扯问题。但我们日常开发都会在windows ide中去跑。我们可能并不需要在windows下实现文件锁,所以这里我们只需要保证能够正常加载fcntl模块即可。这里通过mock一个假的fcntl.py放到python库中即可。

1、创建fcntl.py
fcntl.py代码如下

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

2、将fcntl.py 放入Python Lib中

https://file.blog.humh.cn/2020/04/图片-29.png

如上图,“C:\Program Files\Python\Python36” 为我 python3.6.9的安装路径,将fcntl.py放入其中Lib目录下即可。再次运行py无误。
说明:Lib为python的默认标准库,在运行py时会被加载。

https://file.blog.humh.cn/2020/04/图片-30.png

#
首页      code      Python      解决ModuleNotFoundError: No module named 'fcntl'

humh

文章作者

站长本人,一个憨批!

发表回复

textsms
account_circle
email

  • weiaiF

    非常感谢 顺利解决这个bug了

    7 月前 回复

想你所想

解决ModuleNotFoundError: No module named 'fcntl'
问题 py中引入了fcntl,import fcntl。当在windows系统下运行该py时,报错“ModuleNotFoundError: No module named 'fcntl'”。 原因 fcntl为python标准库中的一个模块,属于Unix …
扫描二维码继续阅读
2020-04-23