Conda 使用笔记

使用 Conda 管理 Python 环境

如何利用 conda 来管理 Python 的开发环境。

安装

安装的时候最好选择将 anaconda 加入到环境变量中,这样可以直接使用 `conda` 命令来管理包,而不需要增加额外的配置。

国内源镜像

国内使用的话,镜像就还是用 清华大学开源软件镜像站 ,按步骤安装:

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 config --set show_channel_urls yes

若想查询对应的配置,则使用 conda config --show 命令进行查看。

就可以了,如果是 conda 不包含的库的话,还是需要使用 pip 命令进行安装的,可以同样配置成清华源。

# 临时使用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
# 设为默认值
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 但是这个需要 pip 版本在 10.0.0 以上,如果低的话,可以临时升级
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U

包管理

conda list #查看所有的包
conda install package_name #安装包
conda remove package_name #移除包
conda update package_name #升级包
conda search search_term #模糊查询包名
conda update conda #更新 conda 本身
conda update anaconda #更新 anaconda
conda update python #更新 Python

环境管理

# 查看环境
conda env list

# 创建环境
conda create -n <env_name> python=<python_version>

# 进行环境
conda activate <env_name>

# 导出环境配置
conda env export > environment.yml

# 依据 yml 文件创建环境
conda env create -f environment.yml

# 依据 yml 更新环境
conda env update -f environment.yml

# 离线创建环境
conda create -n <env_name> --offline

# 复制环境
conda create -n <env_name_new> --clone <env_name> # 如果两个环境名一致,会重新安装环境,用来解决环境名不在 evn list 中的问题。

# 删除环境
conda remove -n <env_name> --all

matplotlib 图片中文乱码问题

使用 Anaconda 进行数据处理后生成图片的时候,如果不指定对应字体会导致中文乱码,可以通过下面的方案进行解决。

设置对应的中文字体:

from pylab import mpl
# 指定默认字体:解决 plot 不能显示中文问题
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 解决保存图像是负号'-'显示为方块的问题
mpl.raParams['axes.unicode_minus'] = False

Mac 下查找字体

在设置的时候,除了宋体外,并不清楚系统中都有什么字体可以使用,可以通过 font_manager 将所有 matplotlib 能使用的字体打印出来。

from matplotlib import font_manager
a = sorted([f.name for f in font_manager.fontManager.ttflist])
for i in a:
    print(i)

如果 matplotlib 中无中文字体,则需要下载对应的 tff 字体只在到 matplotlib/mpl-data/fonts/tff 中,然后使用 font_manager 重新编译一下。

from matplotlib.font_manager import _rebuild

_rebuild()

之后就可以利用上面的方法,将使用新的字体了。

plt.rcParams['font.sans-serif'] = ['STFangsong']
plt.rcParams['axes.unicode_minus'] = False

conda activate 在 Tmux 中不生效

今天重新看了一下 conda 环境的问题,之前的理解是错误的,因为默认的环境变量配置在不启动 Tmux 的时候是能正常使用的,现在看主要原因是在启动 Tmux 的过程中。

重新检查了一下启动前后的环境变量,发现在启动 Tmux 之后,conda 的相关内容被转移到最后的,导致前面的环境变更覆盖掉了 conda 的环境变量。

正确的方法应该是在 $HOME 下新增一个 .zprofile 文件,然后再在文件中增加下面的内容:

if [ -x /usr/libexec/path_helper ]; then
        PATH="" # <- ADD THIS LINE (right before path_helper call)
        eval `/usr/libexec/path_helper -s`
fi

重新加载一下配置文件,就可以正常的使用 conda 命令切换环境了。

将 Conda 环境调整为 32 位环境

在编译 Windows 下的执行工具时,需要针对 Python 的版本进行编译,32 位仅能执行 32 位的程序,所以需要在编译前调完对应的环境位数。

set CONDA_FORCE_32BIT=1

然后再创建环境默认就是 32 位的 Python 了。如何不清楚当前环境具体的信息,可以通过 conda info 可查看该环境的详细信息。

conda 环境增加 ipykernel

  1. 在建立环境时,直接添加 ipykernel

    conda create -n <env_name> python=<python_version> ipykernel
    
  2. 为已经创建好的环境,添加 ipykernel

    conda install -n <env_name> ipykernel
    
  3. 将虚拟环境添加到 jupyterlab 中

    • env_name 虚拟环境的名称

    • display_name 虚拟环境的展示名

      python -m ipykernel install -user --name <env_name> --display-name <display_name>