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),旧的虚拟环境就找不到原来的解释器了。

最直接有效的解决方法是重建虚拟环境。别想着去改那些内部路径,太折腾且容易出问题。

操作步骤很简单:

  1. 确保你的项目根目录下有正确的 Pipfile
  2. 删除旧的虚拟环境目录。通常位置在 ~/.local/share/virtualenvs/ 下,或者项目目录下的 .venv 文件夹。
    # 例如,如果你知道环境名
    pipenv --rm
    # 或者直接找到并删除对应的目录
    rm -rf ~/.local/share/virtualenvs/your-project-*
    
  3. 在项目根目录重新创建环境:
    pipenv install
    
    这会基于你当前全局的、已升级的Python版本创建一个全新的环境,并重新安装 Pipfile 里列出的所有依赖。

总结:别修了,直接删掉重装最省事。


如果我没记错的话,虚拟环境默认是 softlink,虚拟环境中只是把依赖的包装到了当前目录下。可执行文件仍然是系统下的那个。你看看创建虚拟环境的时候是不是有参数控制。

回到顶部