Python 环境配置

70 阅读3分钟

安装 Python

我的学习机器是 Mac Book Pro M1 ,按照下面的步骤安装 Python 环境

developer.apple.com/metal/pytor…

  1. 安装 mimiconda

miniconda 相比于 anaconda 的体积要小不少,核心只包括了:

  • Python
  • Conda : 一款包管理管理,可以理解为 node.js 中 nvm 和 npm 的结合体。
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
sh Miniconda3-latest-MacOSX-arm64.sh
  1. 安装 PyTorch

进入 pytorch.org/ 看一下需要安装的版本,复制推荐的安装命令进行安装

conda install pytorch torchvision torchaudio -c pytorch-nightly

设置环境变量

如果安装之后没有办法在命令行使用 conda 命令,则需要手动配置一下环境,其中 liuqi 是登陆的用户名,在命令行执行 who am i 可以查看

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/liuqi/miniconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/Users/liuqi/miniconda3/etc/profile.d/conda.sh" ]; then
        . "/Users/liuqi/miniconda3/etc/profile.d/conda.sh"
    else
        export PATH="/Users/liuqi/miniconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

设置 conda 源

没有魔法的情况下,有的 python 包无法下载或者下载过慢,建议切换到国内的源,建议清华源。

首先,conda config --show能够显示出所有 conda 的 config 信息。如果只看 channels 可以执行

conda config --show channels

我已经添加了清华的源,可以执行命令添加

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

Vscode 配置

  1. 安装扩展

marketplace.visualstudio.com/items?itemN…

marketplace.visualstudio.com/items?itemN…

marketplace.visualstudio.com/items?itemN…

测试环境是否配置完成

按照上面的步骤操作之后,我们可以在 vscode 中体验一下 python 开发

  1. 我们创建一个 main.ipynb文件,ipynb 文件是一个是一个交互式笔记本,学习使用可以看安全验证 - 知乎

国际惯例,打印一个 hello world

  1. 点击执行

执行前会让我们选择一个内核

我们没有创建其他环境之前可以选择 miniconda 安装完成默认的 base 环境。

可以完美打印 hello world 说明环境配置成功

Conda 常用命令

管理conda自身

查看conda版本

conda --version

查看conda的环境配置

conda config --show

设置镜像

#设置清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

更新conda

将conda自身更新到最新版本

    conda update conda

查询某个命令的帮助

conda create --help

管理环境

Conda允许你创建相互隔离的独立环境,这些环境被称之为虚拟环境。如果创建了虚拟环境,则在上面选择内核版本的时候可以选择对应的虚拟环境

这些环境各自包含属于自己的文件、包以及他们的依存关系,并且不会相互干扰。

miniconda有一个缺省的名为base的环境。但是不建议把程序放在base环境中,应该创建不同的虚拟环境分别管理不同的开发项目。

为什么我们需要虚拟环境呢?

主要是为了在使用大佬的代码的时候与大佬指定的版本一致,不会因为在同一个环境中出现包依赖不同的问题。

创建虚拟环境

conda create -n env_name python=3.10

这表示创建python版本为3.10、名字为env_name的虚拟环境。

查看有哪些虚拟环境

以下三条命令都可以。注意最后一个是”--”,而不是“-”.

v
conda info -e
conda info --envs

激活虚拟环境

conda activate env_name

退出虚拟环境

使用如下命令即可退出当前工作的虚拟环境。

conda deactivate

删除虚拟环境

执行以下命令可以将该指定虚拟环境及其中所安装的包都删除。

conda remove --name env_name --all

如果只删除虚拟环境中的某个或者某些包则是:

conda remove --name env_name  package_name

导出环境

很多的软件依赖特定的环境,我们可以导出环境,这样方便自己在需要时恢复环境,也可以提供给别人用于创建完全相同的环境。

#获得环境中的所有配置
conda env export --name myenv > myenv.yml
#重新还原环境
conda env create -f  myenv.yml

也可以整个环境下的安装包都保存到requirements.txt中

pip freeze > requirements.txt

使用下面命令还原

pip install -r requirements.txt

包(Package)的管理

查询看当前环境中安装了哪些包

conda list

查询当前 repository 中是否有你想要安装的包

conda search package_name

安装包

# 安装最新版
conda install package_name
# 安装指定版本
conda install package_name=0.20.3

更新包

conda update numpy

使用指定的源安装包

conda install pkg_name -c conda_forge

卸载包

conda uninstall package_name

这样会将依赖于这个包的所有其它包也同时卸载

清理anaconda缓存

conda clean -p      # 删除没有用的包 --packages
conda clean -t      # 删除tar打包 --tarballs
conda clean -y -all # 删除所有的安装包及cache(索引缓存、锁定文件、未使用过的包和tar包)##

conda install vs pip install

conda可以管理非python包,pip只能管理python包。

conda自己可以用来创建环境,pip不能,需要依赖virtualenv之类的。

conda安装的包是编译好的二进制文件,安装包文件过程中会自动安装依赖包;pip安装的包是wheel或源码,装过程中不会去支持python语言之外的依赖项。

conda安装的包会统一下载到一个目录文件中,当环境B需要下载的包,之前其他环境安装过,就只需要把之前下载的文件复制到环境B中,下载一次多次安装。pip是直接下载到对应环境中。

conda只能在conda管理的环境中使用,例如比如conda所创建的虚环境中使用。pip可以在任何环境中使用,在conda创建的环境 中使用pip命令,需要先安装pip(conda install pip ),然后可以 环境A 中使用pip 。conda 安装的包,pip可以卸载,但不能卸载依赖包,pip安装的包,只能用pip卸载。

pip和conda在安装软件包时,在依赖关系方面的处理机制不同。pip在递归的串行循环中安装依赖项,不会确保同时满足所有软件包的依赖关系,如果按顺序较早安装的软件包相对于按顺序较晚安装的软件包具有不兼容的依赖项版本,则可能导致环境以微妙的方式被破坏掉;conda使用SAT(satisfiability)solver来验证是否满足环境中安装的所有软件包的所有要求,只要有关依赖项的软件包元数据正确,conda就会按预期产生可用的环境。

建议不要混用。