Python3.7环境下pipenv lock执行失败,求解决方案
Pipenv lock失败问题解决(Python 3.7环境)
问题现象
使用pipenv shell --python 3.7创建Python 3.7虚拟环境后,执行pipenv lock命令触发RuntimeError: Failed to lock Pipfile.lock!错误,核心报错为:
ImportError: cannot import name 'cached_property' from 'functools' (C:\Users\mihaj\AppData\Local\Programs\Python\Python37\lib\functools.py)
当前Pipfile内容:
[[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] flask = "*" [dev-packages] [requires] python_version = "3.7" python_full_version = "3.7.0"
完整报错回溯:
PS D:\freelance\apb-master\flaskdir>pipenv --version pipenv, version 2024.1.0 PS D:\freelance\apb-master\flaskdir>python -V Python 3.7.0 PS D:\freelance\apb-master\flaskdir>pipenv lock --verbose Locking [packages] dependencies... Locking [dev-packages] dependencies... Building requirements... Resolving dependencies... Traceback (most recent call last): File "C:/Users/mihaj/AppData/Local/Programs/Python/Python312/Lib/site-packages/pipenv/resolver.py", line 6, in <module> from functools import cached_property ImportError: cannot import name 'cached_property' from 'functools' (C:\Users\mihaj\AppData\Local\Programs\Python\Python37\lib\functools.py) Locking Failed! [ ] Locking dev-packages... Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Scripts\pipenv.exe\__main__.py", line 7, in <module> # when invoked as python -m pip <command> ^^^^^ File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\vendor\click\core.py", line 1157, in __call__ return self.main(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\cli\options.py", line 52, in main return super().main(*args, **kwargs, windows_expand_args=False) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\vendor\click\core.py", line 1078, in main rv = self.invoke(ctx) ^^^^^^^^^^^^^^^^ File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\vendor\click\core.py", line 1688, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\vendor\click\core.py", line 1434, in invoke return ctx.invoke(self.callback, **ctx.params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\vendor\click\core.py", line 783, in invoke return __callback(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\vendor\click\decorators.py", line 92, in new_func return ctx.invoke(f, obj, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\vendor\click\core.py", line 783, in invoke return __callback(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\vendor\click\decorators.py", line 33, in new_func return f(get_current_context(), *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\cli\command.py", line 342, in lock do_lock( File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\routines\lock.py", line 67, in do_lock venv_resolve_deps( File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\utils\resolver.py", line 859, in venv_resolve_deps c = resolve(cmd, st, project=project) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mihaj\AppData\Local\Programs\Python\Python312\Lib\site-packages\pipenv\utils\resolver.py", line 723, in resolve raise RuntimeError("Failed to lock Pipfile.lock!") RuntimeError: Failed to lock Pipfile.lock!
已尝试过降级pipenv,但问题未解决。
问题原因
functools.cached_property是Python 3.8及以上版本才新增的特性,你使用的Pipenv 2024.1.0版本依赖该特性,但当前虚拟环境为Python 3.7,导致导入失败。此外,你的Pipenv安装在Python 3.12环境下,运行时会调用虚拟环境内的Python 3.7库,进一步触发版本不兼容问题。
解决步骤
卸载当前Pipenv
执行命令完全卸载现有版本:pip uninstall pipenv -y安装兼容Python 3.7的Pipenv版本
选择支持Python 3.7的Pipenv版本(如2023.10.24),用Python 3.7直接安装:python3.7 -m pip install pipenv==2023.10.24重新初始化虚拟环境
删除现有虚拟环境和Pipfile.lock(如果存在),然后重新创建:rm -rf .venv rm Pipfile.lock pipenv shell --python 3.7执行lock命令
进入虚拟环境后,重新执行:pipenv lock
内容的提问来源于stack exchange,提问作者Mikhailo
相关产品推荐
相关产品推荐

