Pipenv安装本地包报错:Underlying buffer has been detached(Python3.8/3.9)
问题描述
- 本地包在Python 3.6环境下用Pipenv安装运行正常,但因需安装特定库,必须切换到Python 3.8或3.9版本。
- 执行命令
pipenv install -e . --python 3.9时触发错误:ValueError: underlying buffer has been detached。 - 异常点:环境创建时显示使用Python 3.9的路径,但错误日志却指向Python 3.6的安装目录。
项目的setup.py配置如下:
setup(name=name, version=_version['__version__'], long_description=long_description, long_description_content_type="text/markdown", python_requires=">=3.6", packages=find_packages(), install_requires=[ 'requests>=2.26.0', 'shapely>=1.6.4', 'numpy>=1.17.0', 'xarray>=0.12.3', 'pandas>0.20.0', 'deprecated>=1.2.12' ], )
解决方案
清理旧环境与缓存
- 删除项目根目录下的
Pipfile和Pipfile.lock文件,移除旧版本环境的关联记录。 - 执行
pipenv --rm删除已创建的Python 3.9虚拟环境,确保环境完全干净。
- 删除项目根目录下的
强制指定Python完整路径
- 避免仅用
--python 3.9,改用Python 3.9可执行文件的绝对路径,示例:# Linux/macOS pipenv install -e . --python /usr/bin/python3.9 # Windows pipenv install -e . --python C:\Python39\python.exe - 彻底规避Pipenv误关联旧版本Python的问题。
- 避免仅用
验证环境变量与版本一致性
- 调整系统环境变量,让Python 3.9的路径优先级高于3.6,确保Pipenv调用正确的工具链。
- 执行
pipenv --venv查看虚拟环境路径,再用pipenv run python --version确认环境内的Python版本是否为3.9。
升级Pipenv及依赖工具
- 旧版Pipenv可能存在版本检测bug,执行以下命令升级所有相关工具:
pip install --upgrade pipenv pip setuptools - 升级后重新创建环境测试。
- 旧版Pipenv可能存在版本检测bug,执行以下命令升级所有相关工具:
排查
long_description加载逻辑underlying buffer has been detached错误有时和文件流处理有关,检查long_description是否从README文件读取时未正确关闭流。可以临时将long_description替换为静态文本,验证是否还会触发错误。
内容的提问来源于stack exchange,提问作者KarloSpacapan
相关产品推荐
相关产品推荐

