为何IPython仍选用旧版Python?Arm Mac升级Python3.12遇问题
Python 3.12升级后IPython版本不同步问题解决(Arm Mac + Homebrew)
问题描述
尝试从Python 3.11升级到3.12,操作环境为Arm架构MacBook Air,通过Homebrew安装Python。但IPython始终使用3.11版本,即使在名为ds的虚拟环境中操作也无法同步升级;同时Jupyter Notebook中导入sklearn失败,但Python原生REPL可正常运行。
终端操作记录
(ds) *** % python --version Python 3.12.3 (ds) *** % ipython /opt/homebrew/lib/python3.11/site-packages/IPython/core/interactiveshell.py:937: UserWarning: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv. warn( Python 3.11.9 (main, Apr 2 2024, 08:25:04) [Clang 15.0.0 (clang-1500.3.9.4)] Type 'copyright', 'credits' or 'license' for more information IPython 8.24.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: import sys In [2]: print (sys.version) 3.11.9 (main, Apr 2 2024, 08:25:04) [Clang 15.0.0 (clang-1500.3.9.4)] In [3]: ^D
已尝试操作:在ds虚拟环境中执行pip install ipython(提示依赖已满足)、pipx install ipython,但仍收到上述警告,IPython版本未同步。
解决步骤
1. 定位问题根源
当前调用的ipython命令来自Homebrew安装的Python 3.11目录(/opt/homebrew/lib/python3.11/site-packages),虚拟环境内的IPython未被优先调用。
2. 修复虚拟环境内的IPython路径
- 激活
ds虚拟环境后,先卸载现有IPython:pip uninstall -y ipython - 重新安装IPython到虚拟环境:
pip install ipython - 验证IPython路径是否指向虚拟环境:
正常输出应为虚拟环境的bin目录(比如which ipython/path/to/ds/bin/ipython)。若输出仍为系统路径,检查PATH变量:
确认虚拟环境的bin目录位于PATH最前端,虚拟环境激活后会自动配置,若未生效可重新激活环境。echo $PATH
3. 移除全局IPython干扰
pipx安装的是全局独立环境的IPython,会和虚拟环境版本冲突,先卸载:
pipx uninstall ipython
4. 验证IPython版本同步
在激活的ds环境中运行:
ipython --version
进入IPython后执行:
import sys print(sys.version)
确认输出为Python 3.12.3。
5. 修复Jupyter Notebook内核问题
Jupyter默认内核可能仍指向Python 3.11,需添加虚拟环境对应的内核:
- 在
ds环境中安装ipykernel:pip install ipykernel - 添加自定义内核:
python -m ipykernel install --user --name=ds --display-name "Python 3.12 (ds)" - 打开Jupyter Notebook,选择
Python 3.12 (ds)内核,再测试from sklearn import ...即可正常运行。
内容的提问来源于stack exchange,提问作者RadlyEel
相关产品推荐
相关产品推荐

