M1 Monterey下virtualenv报符号链接过多、库加载失败问题
解决方案
Python3 报错修复
你的Python3报错是Homebrew安装的Python3.9框架文件损坏导致,按以下步骤修复:
- 卸载损坏的Python3.9并清理残留:
brew uninstall --purge python@3.9 brew cleanup - 重新安装Python3.9:
brew install python@3.9 - 验证安装有效性,执行以下命令正常输出版本号即为成功:
python3.9 --version - 重装当前用户维度的virtualenv,避免修改全局权限:
pip3 install --user virtualenv - 将用户Python可执行文件目录加入环境变量,在
~/.zshrc(如果用bash就改~/.bash_profile)末尾添加:export PATH="$HOME/Library/Python/3.9/bin:$PATH" - 加载配置后测试创建虚拟环境:
激活虚拟环境无报错即修复完成。source ~/.zshrc virtualenv -p python3.9 test_py3_env
Python2.7 报错修复
你的Python2.7报错有两个核心原因:一是最新版virtualenv已经停止支持Python2.7,二是你之前的操作导致/Library/Frameworks/Python.framework/Versions/2.7/下的符号链接出现死循环,且系统自带的Python2.7在M1芯片设备上本身存在兼容问题,不建议直接使用,推荐用pyenv做版本隔离:
- 安装pyenv管理Python版本:
brew install pyenv - 安装Python2.7编译依赖:
brew install openssl@1.1 readline sqlite3 xz zlib tcl-tk - 将pyenv配置加入
~/.zshrc末尾:export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/shims:$PATH" if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi - 加载配置后编译安装Python2.7.18:
CPPFLAGS="-I$(brew --prefix openssl@1.1)/include" LDFLAGS="-L$(brew --prefix openssl@1.1)/lib" pyenv install 2.7.18 - 在需要使用Python2.7的项目目录下执行以下命令切换本地Python版本,完全隔离系统Python:
pyenv local 2.7.18 - 安装支持Python2.7的最后一版virtualenv:
pip install virtualenv==20.7.2 - 测试创建Python2.7虚拟环境:
virtualenv -p python2.7 test_py2_env
激活无报错即修复完成。
注意事项
不要尝试修改/usr/bin、/System/Library目录下的任何系统Python相关文件,系统自带的Python是为系统服务设计的,个人使用的Python版本全部通过Homebrew、pyenv等工具安装隔离,即可避免配置损坏问题。
内容的提问来源于stack exchange,提问作者Ronny
相关产品推荐
相关产品推荐

