添加numpy时Pipenv lock失败,报AttributeError错误求助
问题:添加numpy到Pipfile后执行
pipenv lock报错AttributeError 问题详情
- 目标:生成包含numpy的Pipfile与Pipfile.lock文件
- 触发错误:
AttributeError: 'String' object has no attribute 'update' - 基础状态:不添加numpy时,
pipenv lock可正常运行;pipenv graph显示numpy 1.21.6已作为间接依赖安装,但需在Pipfile中显式声明才能在Docker镜像中完成安装 - 已尝试操作:在
[packages]区块中添加numpy = "*"和numpy = "==1.21.6"两种配置,均触发相同错误
当前Pipfile内容:
[[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [dev-packages] autopep8 = "*" pep8 = "*" pytest = "*" pytest-datadir = "*" pytest-mock = "*" [packages] Jinja2 = "==3.1.2" pandas = "==1.3.5" PyYAML = "==6.0.1" click = "==8.1.7" google-ads = "==22.0.0" db-dtypes = "==1.1.1" pyarrow = "==12.0.0" [requires] python_version = "3.7"
解决方案
1. 升级Pipenv版本
该错误大概率是Pipenv版本过旧导致的兼容性问题,先升级到最新稳定版:
pip install --upgrade pipenv
2. 清理依赖缓存
升级后清理旧缓存,避免残留依赖干扰锁文件生成:
pipenv clean pipenv lock --clear
3. 重新添加numpy并生成锁文件
先移除本地已安装的numpy,再通过Pipenv命令重新添加(会自动写入Pipfile):
pipenv uninstall numpy pipenv install numpy==1.21.6
完成后执行锁文件生成:
pipenv lock
4. 手动校验Pipfile格式
如果自动写入出现格式错误,手动检查[packages]区块的语法,确保numpy配置符合标准格式:
[packages] # 保留原有包配置 numpy = "==1.21.6"
注意每个包的配置为包名 = "版本号"格式,无多余符号或换行错误。
5. 确认版本兼容性
numpy 1.21.6与Python 3.7完全兼容,若仍有问题,可尝试指定兼容版本范围:
numpy = ">=1.21.0,<1.22.0"
内容的提问来源于stack exchange,提问作者Ahmid Aziz
相关产品推荐
相关产品推荐

