macOS下使用pipenv创建的Python虚拟环境,在全局Python升级后报错如何解决?
我用 pipenv 创建了一个虚拟环境,前段时间还用得好好的,最近用 homebrew 升级了下软件,刚好 python 也从 3.6.4 升级到了 3.6.5,之后就发现 pipenv 创建的虚拟环境的 python 不能用了。报错如下:
dyld: Library not loaded: [@executable_path](/user/executable_path)/../.Python Referenced from: /Users/simbapeng/.local/share/virtualenvs/img_process-PtKFY7J-/bin/python Reason: image not found [1] 50112 abort img_process-PtKFY7J-/bin/python --version
macOS下使用pipenv创建的Python虚拟环境,在全局Python升级后报错如何解决?
2 回复
这个问题我遇到过。核心原因是pipenv创建虚拟环境时,会硬编码指向创建时全局Python解释器的路径。当你升级了系统Python(比如从3.9到3.10),旧的虚拟环境就找不到原来的解释器了。
最直接有效的解决方法是重建虚拟环境。别想着去改那些内部路径,太折腾且容易出问题。
操作步骤很简单:
- 确保你的项目根目录下有正确的
Pipfile。 - 删除旧的虚拟环境目录。通常位置在
~/.local/share/virtualenvs/下,或者项目目录下的.venv文件夹。# 例如,如果你知道环境名 pipenv --rm # 或者直接找到并删除对应的目录 rm -rf ~/.local/share/virtualenvs/your-project-* - 在项目根目录重新创建环境:
这会基于你当前全局的、已升级的Python版本创建一个全新的环境,并重新安装pipenv installPipfile里列出的所有依赖。
总结:别修了,直接删掉重装最省事。
如果我没记错的话,虚拟环境默认是 softlink,虚拟环境中只是把依赖的包装到了当前目录下。可执行文件仍然是系统下的那个。你看看创建虚拟环境的时候是不是有参数控制。

