本文以 macOS 系统搭建 Python 3.7 开发环境为例进行介绍, 同样也适用于 Linux 和 Windows, 以及其他 Python 版本. 该方案的优点: 环境隔离, 不与原系统产生冲突; 轻量灵活, 如果不再需要, 可以快速清除.
方案简单概括: 通过 conda 管理 Python 版本, 通过 venv 管理 Python 环境.
这里推荐安装 Miniconda, 而不是 Anaconda, 因为 Miniconda 体积更小, 我们可以自主选择需要安装哪些依赖包.
版本选择: 支持 Python 3.7 的最新版. 如下图所示, 可以看到支持各个平台的安装包, 这里选择 Miniconda3-py37_4.9.2-MacOSX-x86_64.sh
.
下载到 /opt
目录下, 并安装到该目录下. 由于 /opt
目录的 owner 一般是 root
, 那么在该目录下执行命令, 需要用 sudo
; 当然也可以事先修改 owner 为自己.
sudo chown <username>:staff /opt # 不是必须, 但建议修改
cd /opt
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py37_4.9.2-MacOSX-x86_64.sh
chmod a+x Miniconda3-py37_4.9.2-MacOSX-x86_64.sh
./Miniconda3-py37_4.9.2-MacOSX-x86_64.sh
# 安装目录手动设置为 /opt/miniconda3
安装完成, 选择初始化
installation finished.
Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]
[yes] >>> yes
no change /opt/miniconda3/condabin/conda
no change /opt/miniconda3/bin/conda
no change /opt/miniconda3/bin/conda-env
no change /opt/miniconda3/bin/activate
no change /opt/miniconda3/bin/deactivate
no change /opt/miniconda3/etc/profile.d/conda.sh
no change /opt/miniconda3/etc/fish/conf.d/conda.fish
no change /opt/miniconda3/shell/condabin/Conda.psm1
no change /opt/miniconda3/shell/condabin/conda-hook.ps1
no change /opt/miniconda3/lib/python3.7/site-packages/xontrib/conda.xsh
no change /opt/miniconda3/etc/profile.d/conda.csh
modified /Users/henry/.zshrc
==> For changes to take effect, close and re-open your current shell. <==
If you'd prefer that conda's base environment not be activated on startup,
set the auto_activate_base parameter to false:
conda config --set auto_activate_base false
Thank you for installing Miniconda3!
验证是否安装成功, 打开新的终端窗口, 看到有 (base)
字符, 如下图所示, 说明当前窗口, 已经激活了 base 环境. (如上面的安装信息显示, 默认会自动激活 base 环境)
以上命令输出信息说明 conda 和 Python 3.7.9 都已安装成功. 如果想默认不自动激活 base 环境, 可以执行
conda config --set auto_activate_base false
这时会新增文件 ~/.condarc
, 写入如下配置信息. (等效于手动修改该文件)
auto_activate_base: true
从上面还可以看到, 安装完 Miniconda3 以后, 默认只有 base 环境, 如果还想手动安装别的环境, 比如 Python 3.8, 本小节介绍一下方法, 没有这个需求的同学可以直接跳过.
在执行命令之前, 先参照阿里 Anaconda 镜像文档, 配置一下代理, 这样会让接下来的操作更高效! 我配置完以后, ~/.condarc
完整内容如下.
auto_activate_base: false
channels:
- defaults
show_channel_urls: true
default_channels:
- http://mirrors.aliyun.com/anaconda/pkgs/main
- http://mirrors.aliyun.com/anaconda/pkgs/r
- http://mirrors.aliyun.com/anaconda/pkgs/msys2
custom_channels:
conda-forge: http://mirrors.aliyun.com/anaconda/cloud
msys2: http://mirrors.aliyun.com/anaconda/cloud
bioconda: http://mirrors.aliyun.com/anaconda/cloud
menpo: http://mirrors.aliyun.com/anaconda/cloud
pytorch: http://mirrors.aliyun.com/anaconda/cloud
simpleitk: http://mirrors.aliyun.com/anaconda/cloud
接下来, 创建名为 py38
的 Python 环境, 命令如下
conda create -n py38 python=3.8.5
测试是否生效
退出环境, 删除环境
conda deactivate
conda remove -n py38 --all
我是将虚拟环境安装在 /usr/local/lib/python3
目录下的 (手动新建, 并确保 owner 是自己)
cd /usr/local/lib/python3
conda activate base
python -m venv venv-py37-tf2
source venv-py37-tf2/bin/activate
pip3 install -U pip 'setuptools<42' wheel
# 接着安装需要的依赖包即可
为了在 PyCharm 中使用上述环境, 按如下方式配置即可.
为什么选择 Python 3.7? Python 3.8 不支持 TensorFlow 1.x; Python 3.7 引入了新模块 dataclasses
, 推荐使用.