Homebrew 升级到 python3 导致的 virtualenv 问题 解决方案

imonyse2019-03-07 发布,2020-01-16更新

标签: coder python

基于大环境下,python3的项目越来越多,很多项目的最新版本也开始支持python3,所以上周决定把自己的开发环境迁移到python3。用 brew 安装完了之后,用起来感觉良好,就没想那么多。
然而,这周要维护一下原先给公司开发的几个django项目,就发觉出问题了。

dyld: Library not loaded: @executable_path/../.Python
  Referenced from: .env/bin/python
  Reason: image not found
[1]    82133 abort      ./manage.py

这个项目的virtualenv 是用的旧版python2.7创建的,brew升级之后,原先Python软链接到的python不存在了,自然会报错。
用brew重新安装python2.7,并且重新安装2.7版的virtualenv之后,发觉还是不行。原因是python2.7的小版本号不一样,所以旧的python还是没有装回来。

那么,现在需要把env里面失效的软链接重新创建一下。先用 find 命令,找到并且删除env里面所有的软链接文件

find .env -type l -delete

然后用virtualenv命令重写一下env文件夹

virtualenv .env

这个会重新创建软链接文件,改写与之相关的部分文件,却不会导致旧env里安装过的pip包消失。成功之后,旧的django就能愉快的运行了。