Dockerfile中执行pipenv lock命令报错“No such option: --requirements”的解决方法
Dockerfile中执行pipenv lock命令报错“No such option: --requirements”的解决方法
你遇到的这个报错完全是因为pipenv版本更新后,导出依赖列表的命令语法变了——较新的pipenv版本已经不再支持用lock --requirements(或缩写-r)来导出requirements文件了,这才会提示你“No such option: --requirements”。
下面给你两种可行的解决思路,根据你的需求选就行:
方法一:适配新版本pipenv的命令(推荐)
如果你想使用最新版的pipenv,直接把Dockerfile里出错的那行命令替换成新的语法就行:
把原来的:
RUN pipenv lock -r --dev > requirements.txt
改成:
RUN pipenv requirements --dev > requirements.txt
这里的requirements是pipenv新增的独立命令,专门用来导出依赖列表,加上--dev参数就能把开发依赖也一起导出,完全替代了旧版lock -r --dev的功能。
方法二:锁定旧版本pipenv(适合需要兼容旧项目的场景)
如果你因为项目原因必须用旧版pipenv,那可以在安装pipenv时指定一个支持lock -r参数的稳定版本,比如2022.12.19这个版本:
把Dockerfile里安装pipenv的那行:
RUN pip install pipenv pytest
改成:
RUN pip install pipenv==2022.12.19 pytest
这样安装的旧版pipenv就能正常识别lock -r --dev命令,不会再报错。
小提示
以后遇到这类命令参数不兼容的问题,你可以先在本地环境运行pipenv --version查看当前版本,再用pipenv requirements --help或者pipenv lock --help查看对应版本的可用参数,确认后再放到Dockerfile里,能少踩很多版本兼容的坑。
备注:内容来源于stack exchange,提问作者Diego L
相关产品推荐
相关产品推荐

