Conda学习关键点总结

ZhuYuanxiang 2019-01-01 00:00:00
Categories: Tags:

conda

Channels

change pip channels

寻找pip.conf的位置:pip -v config list,然后添加下面的内容

1
2
3
4
5
[global]
# 清华源
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
# 阿里源
index-url = https://mirrors.aliyun.com/pypi/simple
  1. 临时使用别的源:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $PKG_NAME
  2. 设为默认安装源:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

change conda channels

修改用户目录下的 .condarc 文件即可,详情参考镜像使用帮助

TsingHua

清华源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

USTC

已经关闭,打开时自动转向清华源。

SJTUG

上海交通大学

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.sjtug.sjtu.edu.cn/anaconda
default_channels:
- https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main
- https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/free
- https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/r
- https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/pro
- https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud
msys2: https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud
bioconda: https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud
menpo: https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud
pytorch: https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud
simpleitk: https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud

PIP

Install PIP

Python 安装完成后,自带 pip

requirements.txt

pip freeze

列出需要的包:pip freeze

生成 requirements.txt 文件:pip freeze > requirements.txt

安装 requirements.txt 文件:pip install -r requirements.txt

在 env1 中生成,在 env2 中安装:

1
2
env1/bin/pip freeze > requirements.txt
env2/bin/pip install -r requirements.txt

pipreqs

只会导出当前项目运行所依赖的包,环境中多余的库就不会导出。

安装模块:pip install pipreqs

生成文件:pipreqs ./ --encoding utf-8 会在当前目录下生成文件

Error

问题:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 966: illegal multibyte sequence

解决:指定编码格式:pipreqs ./ --encoding=utf8

Anaconda

Install Anaconda

使用清华源去下载安装最新版的安装文件。

Ubuntu

不要使用 sudo 去安装,避免安装到 root 目录中,不方便配置和使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sh Anaconda3-5.3.1-Linux-x86_64.sh

# miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 一直按回车然后输入yes
please answer 'yes' or 'no':
>>> yes

# 选择安装路径, 文件名前加点号表示隐藏文件
Miniconda3 will now be installed into this location:
>>> ~/.miniconda3

# 添加配置信息到 ~/.bashrc文件
Do you wish the installer to initialize Miniconda3 by running conda init? [yes|no]
[no] >>> yes

# 重新启动 shell
source ~/.bashrc

打开 anaconda 的图形化界面(Navigator)

1
anaconda-navigator

Windows 10

安装文件:Anaconda3-5.3.1-Windows-x86_64.exe,也建议安装给当前用户使用。

environment

基于anaconda python的环境导出到environment.yml,再通过这个文件在其它电脑上创建anaconda python环境。

1
2
linux: conda env export | grep -v "^prefix: " > environment.yml
windows: conda env export | findstr /v "^prefix: " > environment.yml

上面命令导出时通过grep删除了“prefix:“ ,但是实际好像通过文件创建的anaconda python环境,prefix选项好像是不起作用的。

1
conda env create -f environment.yml

上面命令会安装在 conda 默认的环境路径 envs,如果要指定其它安装路径,使用-p选项

1
conda env create -f environment.yml -p /home/user/anaconda3/envs/env_name
1
conda env export --no-builds -f environment.yml
1
conda env export --from-history -f environment.yml

conda vs. pip vs. virtualenv

conda vs. pip vs. virtualenv commands

注:conda general commands help

base commands

任务 conda Pip
创建需求文件 conda list --export pip freeze
安装其他管理器 conda install pip pip install conda
安装 Python conda install python=x.x X
更新 Python conda update python[^2] X
查看版本 conda -V pip -V
查看帮助 conda -h或者conda –help pip -h或者pip –help
清除缓存 conda clean
配置参数 conda config

environment commands

任务 conda Virtualenv
创建环境 conda create -n env_name python=3.6 cd $ENV_BASE_DIR; virtualenv $ENVIRONMENT_NAME
删除环境 conda remove -n env_name –all X
复制环境 conda create -n dest_env_name –clone src_env_name X
重命名环境 可以通过复制环境完成重命名 X
激活环境 conda activate env_name source $ENV_BASE_DIR/$ENVIRONMENT_NAME/bin/activate
去活环境 conda deactivate env_name deactivate
环境信息 conda info
环境列表 conda env list Install virtualenv wrapper, then lsvirtualenv

package commands

任务 conda 包管理器命令和环境管理器命令 Pip 包管理器命令
网络安装包 conda install pkg_name pip install pkg_name
磁盘安装包 conda install pkg_location
指定源安装包 conda install pkg_name -c $URL pip install pkg_name -i $URL
安装包到指定环境 conda install -n env_name pkg_name X
安装包到指定用户目录(解决权限问题) pip install pkg_name --user
删除当前环境包 conda remove pkg_name pip uninstall $PKG_NAME
删除指定环境包 conda remove -n env_name pkg_name X
更新当前环境包 conda update pkg_name pip install -U pkg_name
更新指定环境包 conda update -n env_name pkg_name X
更新包管理器 conda update conda pip install -U pip
搜索有效包 conda search pkg_name pip search pkg_name
当前环境安装包列表 conda list pip list
指定环境安装包列表 conda list -n $ENV_NAME
conda底层包工具(试验) conda package

Examples

Manage Environment

VSCode activate powershell conda env

setting.json文件中加入下面两行配置

1
2
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"terminal.integrated.shellArgs.windows":[ "-ExecutionPolicy" ,"ByPass", "-NoExit", "-Command","& 'C:\\ProgramData\\Anaconda3\\shell\\condabin\\conda-hook.ps1'; conda activate 'C:\\ProgramData\\Anaconda3' "]

Win10 activate conda env

Q: Windows 10 无法激活 conda 的环境时,即输入 conda activate env_name,结果还是在 base 环境下,就是激活失败。

A: Win+X 进入 PowerShell 的管理员模式,输入 conda init powershell,关闭当前的 PowerShell窗口,再次进入发现可以激活了。

C: VSCode 的 Remote Developement 的 Terminal 环境下的 PowerShell 无法激活问题也可以照此操作。

参考文献:

Errors

Can’t locate DLLs

无法定位动态链接库问题

进入 “Anaconda\DLLS” 目录,查看出了问题的 DLL 文件的日期;

再进入 “Anaconda\Library\bin” 目录,比较两者日期,如果日期不同步就选择一个进行同步,然后重新启动 Anaconda 就可以了。

Import ssl_错误,也可以采用同样的方式处理。删除多余的 DLL 文件就可以了。

SSLError

  1. 找不到 SSL 模块,因此需要将 SSL 模块所在的文件夹路径加入环境变量 ( “D: \Program Files\Anaconda3\Library\bin” )
  2. 找不到 DLL 文件,需要将缺失的文件拷入目录中 ( “D: \Program Files\Anaconda3\Library\bin” ),或者拷入到环境所在的目录中 ( “D: \Program Files\Anaconda3\env\your-env\bin” )

UnicodeDecodeError

错误内容:

1
2
File "C:\Users\ygpfr\Anaconda3\envs\tf-gpu\lib\site-packages\pyreadline\lineeditor\history.py", line 82, in read_history_filey_file for line in open(filename, 'r'):
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 451: illegal multibyte sequence

pyreadline 的代码在 GBK 环境下存在问题,找到 Anaconda3\Lib\site-packages\pyreadline\lineeditor\history.py 中 82 行,把原来的 open(filename, ‘r’) 改为 open(filename, ‘r’,encoding=‘utf-8’) 即可。

Git Bash 中使用 Conda

  1. 找到 conda 的安装目录,进入 etc/profild.d 文件夹,找到 conda.sh 文件
  2. 右键,进入 Git Bash Here
  3. 输入 echo ". ${PWD}/conda.sh" >> ~/.bashrc
    1. 如果路径中有空格就输入 echo ". '${PWD}'/conda.sh >> ~/.bashrc
  4. 关闭窗口,重新打开 Git Bash
    1. 第一次打开时因为缺少 .bash_profile 会报错,关掉再打开就好了

参考文献:

[^2]: conda update python 只更新当前系列中的最新版本。例如:Python 2.x 更新为最新版本的 2.x, Python 3.x 更新为最新版本的 3.x.