自动摘要
正在生成中……
由于历史原因,Mac上有几个Python的版本,不但有Python2,还有Python3,而且Python3可以安装多个版本。为了方便开发,我也不想去捣鼓pyenv和virtul-env,这里提供一个Python自带的功能,加上一些简单的操作。做出一套还算灵活的虚拟环境。
这里以建立一个python3.10的虚拟环境为例。
1. 校正Python版本
首先从官网下载安装包,Mac的安装包是一个“python-3.10.1-macos11.pkg
”的文件,按照图形界面的安装指南安装完成之后。 安装位置应该在“/Library/Frameworks/Python.framework/Versions/3.10
” 运行
which -a python3
发现有两个python3
:
#刚才安装的最新版本,Current是3.10目录的链接
/usr/local/bin/python3 -> /Library/Frameworks/Python.framework/Versions/Current/bin/python3
#Xcode 里的Python 3.7
/usr/bin/python3 -> /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/bin/python3
此外,还有旧版本的Python3.6和Python2.7
总结一下,各个版本的目录位置如下:
#最新版本Python3.10.1
/Library/Frameworks/Python.framework/Versions/Current/
或者/Library/Frameworks/Python.framework/Versions/3.10/
#Xcode里的Python3.7
/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7
#旧版本Python3.6
/Library/Frameworks/Python.framework/Versions/3.6/
#系统自带的Python2.7
/System/Library/Frameworks/Python.framework/Versions/2.7
为了减少混淆,我把/usr/bin/python3
由Xcode的3.7改成当前版本3.10,另外也不需要/usr/local/bin/python3
, 也就是把/usr/local/bin/python3
移过去替换掉/usr/bin/python3
,但Mac的/usr/bin
目录是是read-only
的,报错。
override rwxr-xr-x root/wheel restricted,compressed for /usr/bin/python3? y
rm: /usr/bin/python3: Read-only file system
需要这样操作:
sudo mount -uw /
sudo mv /usr/local/bin/python3 /usr/bin/python3
重新开启终端,现在应该只有一个Python3了,并且指向3.10.1 版本
$ which -a python3
/usr/bin/python3
$ python3 -V
Python 3.10.1
2. 建立虚拟环境
#以当前3.10.1建立一个虚拟环境
cd /Users/falcon/projects/python
python3 -m venv py3.10
也可以指定一个别的Python版本建立虚拟环境,但必须指定 python的完整路径,如以Python3.6为例:
cd /Users/falcon/projects/python
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 -m venv py3.6
3.使用及退出
我写了几个别名放在 ~/.zshrc
alias py2="source /Users/falcon/projects/python/py2env/bin/activate"
alias py310="source /Users/falcon/projects/python/py3.10/bin/activate"
alias py36="source /Users/falcon/projects/python/py3.6/bin/activate"
alias leave="deactivate"
alias py3=py310
使用 py3
切换到3.10, py36
切换到 3.6,使用leave
退出
$ py3
(py3.10)
# falcon @ FalconPro in ~/projects/python [18:05:32]
$ leave
检查当前 Python 所在的路径
$ which python
/Users/falcon/projects/python/py3.10/bin/python
(py3.10)
注意,进入虚拟环境后,安装的Packages会在虚拟环境的目录下。如进入py3.10环境
(py3.10)
pip install ipython
#...
# ipython in /Users/falcon/projects/python/py3.10/lib/python3.10/site-packages (7.31.0)