如何使用Anaconda来管理 Python 所用的包和环境
Anaconda 能让你轻松安装在数据科学工作中经常使用的包。你还将使用它创建虚拟环境,以便更轻松地处理多个项目。Anaconda 简化了我的工作流程,并且解决了我在处理包和多个 Python 版本时遇到的大量问题。
Anaconda 实际上是一个软件发行版,它附带了conda、Python 和 150 多个科学包及其依赖项。应用程序conda是包和环境管理器。
使用conda来管理包和环境能减少将来在处理你要使用的各种库时遇到的问题。
管理
包管理器用于在计算机上安装库和其他软件。你可能已经熟悉 pip,它是 Python 库的默认包管理器。conda 与 pip 相似,不同之处是可用的包以数据科学包为主,而 pip 适合一般用途。但是,conda并非像 pip 那样专门适用于 Python,它也可以安装非 Python 的包。它是适用于任何软件堆栈的包管理器。也就是说,并非所有的 Python 库都能通过 Anaconda 发行版和 conda 获得。在使用 conda 的同时,你仍可以并且仍将使用 pip 来安装包。
Conda 安装了预编译的包。例如,Anaconda 发行版附带了使用MKL 库编译的 Numpy、Scipy 和 Scikit-learn,从而加快了各种数学运算的速度。这些包由发行版的贡献者维护,这意味着它们通常滞后于新版本。但是,由于有人需要为许多系统构建这些包,因此,它们往往更为稳定,而且更便于你使用。
环境
除了管理包之外,conda 还是虚拟环境管理器。它类似于另外两个很流行的环境管理器,即virtualenv和pyenv。
环境能让你分隔你要用于不同项目的包。你常常要使用依赖于某个库的不同版本的代码。例如,你的代码可能使用了 Numpy 中的新功能,或者使用了已删除的旧功能。实际上,不可能同时安装两个 Numpy 版本。你要做的应该是,为每个 Numpy 版本创建一个环境,然后在适用于项目的环境中工作。
在应对 Python 2 和 Python 3 时,此问题也会常常发生。你可能会使用在 Python 3 中不能运行的旧代码,以及在 Python 2 中不能运行的新代码。同时安装两个版本可能会造成许多混乱和错误。而创建独立的环境会好很多。
也可以将环境中的包的列表导出为文件,然后将该文件与代码包括在一起。这能让其他人轻松加载代码的所有依赖项。pip 提供了类似的功能,即pip freeze > requirements.txt。
在 Windows 上,会随 Anaconda 一起安装一批应用程序:
Anaconda Navigator,它是用于管理环境和包的 GUI
Anaconda Prompt 终端,它可让你使用命令行界面来管理环境和包
Spyder,它是面向科学开发的 IDE
管理包
安装了 Anaconda 之后,管理包是相当简单的。要安装包,请在终端中键入conda install package_name。例如,要安装 numpy,请键入conda install numpy。
你还可以同时安装多个包。类似conda install numpy scipy pandas的命令会同时安装所有这些包。还可以通过添加版本号(例如conda install numpy=1.10)来指定所需的包版本。
Conda 还会自动为你安装依赖项。例如,scipy依赖于numpy,因为它使用并需要numpy。如果你只安装scipy(conda install scipy),则 conda 还会安装numpy(如果尚未安装的话)。
大多数命令都是很直观的。要卸载包,请使用conda remove package_name。要更新包,请使用conda update package_name。如果想更新环境中的所有包(这样做常常很有用),请使用conda update --all。最后,要列出已安装的包,请使用前面提过的conda list。
如果不知道要找的包的确切名称,可以尝试使用conda search search_term进行搜索。例如,我知道我想安装Beautiful Soup,但我不清楚确切的包名称。因此,我尝试执行conda search beautifulsoup。
管理环境
如前所述,可以使用 conda 创建环境以隔离项目。要创建环境,请在终端中使用conda create -n env_name list of packages。在这里,-n env_name设置环境的名称(-n是指名称),而list of packages是要安装在环境中的包的列表。例如,要创建名为my_env的环境并在其中安装 numpy,请键入conda create -n my_env numpy。
创建环境时,可以指定要安装在环境中的 Python 版本。这在你同时使用 Python 2.x 和 Python 3.x 中的代码时很有用。要创建具有特定 Python 版本的环境,请键入类似于conda create -n py3 python=3或conda create -n py2 python=2的命令。实际上,我在我的个人计算机上创建了这两个环境。我将它们用作与任何特定项目均无关的通用环境,以处理普通的工作(可轻松使用每个 Python 版本)。这些命令将分别安装 Python 3 和 2 的最新版本。要安装特定版本(例如 Python 3.3),请使用conda create -n py python=3.3。
进入环境
创建了环境后,在 OSX/Linux 上使用source activate my_env进入环境。在 Windows 上,请使用activate my_env。
进入环境后,你会在终端提示符中看到环境名称,它类似于(my_env) ~ $。环境中只安装了几个默认的包,以及你在创建它时安装的包。可以使用conda list检查这一点。在环境中安装包的命令与前面一样:conda install package_name。不过,这次你安装的特定包仅在你进入环境后才可用。要离开环境,请键入source deactivate(在 OSX/Linux 上)。在 Windows 上,请使用deactivate。
保存和加载环境
共享环境这项功能确实很有用,它能让其他人安装你的代码中使用的所有包,并确保这些包的版本正确。可以使用conda env export > environment.yaml将包保存为YAML。第一部分conda env export写出环境中的所有包(包括 Python 版本)。
上图可以看到列出了环境的名称和所有依赖项及其版本。导出命令的第二部分> environment.yaml将导出的文本写入到 YAML 文件environment.yaml中。现在可以共享此文件,而且其他人能够创建和你用于项目相同的环境。
要通过环境文件创建环境,请使用conda env create -f environment.yaml。这会创建一个新环境,而且它具有在environment.yaml中列出的同一库。
列出环境
如果忘记了环境的名称(我有时会这样),可以使用conda env list列出你创建的所有环境。你会看到环境的列表,而且你当前所在环境的旁边会有一个星号。默认的环境(即当你不在环境中时使用的环境)名为root。
删除环境
如果你不再使用某些环境,可以使用conda env remove -n env_name删除指定的环境(在这里名为env_name)。
最佳做法
使用环境
对我帮助很大的一点是,我的 Python 2 和 Python 3 具有独立的环境。我使用了conda create -n py2 python=2和conda create -n py3 python=3创建两个独立的环境,即py2和py3。现在,我的每个 Python 版本都有一个通用环境。在所有这些环境中,我都安装了大多数标准的数据科学包(numpy、scipy、pandas 等)。
我还发现,为我从事的每个项目创建环境很有用。这对于与数据不相关的项目(例如使用 Flask 开发的 Web 应用)也很有用。例如,我为我的个人博客(使用Pelican)创建了一个环境。
共享环境
在 GitHub 上共享代码时,最好同样创建环境文件并将其包括在代码库中。这能让其他人更轻松地安装你的代码的所有依赖项。对于不使用 conda 的人,我通常还会使用pip freeze(在此处了解详情)将一个 piprequirements.txt文件包括在内。
了解更多信息
要详细了解 conda 和它如何融入到 Python 生态系统中,请查看这篇由 Jake Vanderplas 撰写的文章:Conda myths and misconceptions(有关 conda 的迷思和误解)。此外,有空也可以参考这篇conda 文档。
用conda创建python虚拟环境
1、首先在所在系统中安装Anaconda。可以打开命令行输入conda -V检验是否安装以及当前conda的版本。
2、conda常用的命令。
1)conda list 查看安装了哪些包。
2)conda env list 或 conda info -e 查看当前存在哪些虚拟环境
3)conda update conda 检查更新当前conda
4)conda update --all 更新本地已安装的包
3、创建Python虚拟环境。
使用 conda create -n your_env_name python=X.X(2.7、3.6等) anaconda 命令创建python版本为X.X、名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装目录envs文件下找到。
4、使用激活(或切换不同python版本)的虚拟环境。
打开命令行输入python --version可以检查当前python的版本。
使用如下命令即可 激活你的虚拟环境(即将python的版本改变)。
Linux: source activate your_env_name(虚拟环境名称)
Windows: activate your_env_name(虚拟环境名称)
这是再使用python --version可以检查当前python版本是否为想要的。
5、对虚拟环境中安装额外的包。
使用命令conda install -n your_env_name [package]即可安装package到your_env_name中
6、关闭虚拟环境(即从当前环境退出返回使用PATH环境中的默认python版本)。
使用如下命令即可。
linux: source deactivate
Windows: deactivate
7、删除虚拟环境。
使用命令conda remove -n your_env_name(虚拟环境名称) --all, 即可删除。
8、删除环境中的某个包。
使用命令conda remove --name your_env_name package_name 即可。
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 --remove-key channels
在执行conda config 命令的时候
会在当前用户目录下创建 .condarc 文件,可以查看更换源前后该文件内容的变化。
conda常用命令
linux系统上下载并安装conda:
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda2-latest-Linux-x86_64.sh
bash Miniconda2-latest-Linux-x86_64.sh
后续具体步骤参照 ——-生信技能树conda管理生信软件一文就够
查看是否成功安装
source ~/.bashrc
未出现任何提示,说明安装成功,进行下一步调用conda命令
conda --help
若出现“conda command not found”这样的语句,则可以通过编辑~/.bashrc文件
vim ~/.bashrc
在~/.bashrc文件结尾加上
export PATH=~/具体conda安装路径/bin:$PATH
退出后,再次执行
source ~/.bashrc
conda --help
配置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/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
conda config --set show_channel_urls yes
source ~/.condarc
通过source ~/.condarc查看现有环境配置镜像,vim命令可以编辑 ~/.condarc删除失败的镜像。
创建小环境
conda create -n +创建环境名称
查看小环境
conda info -e
进入小环境
source activate +环境名称
查看小环境已安装的软件
conda list
安装相应版本的软件
conda install PACKAGENAME==VERSION
查找相应的软件包
conda search PACKAGENAME
退出小环境
conda deactivate
移除小环境
conda env remove --name bio-env
conda查看删除镜像源:
anaconda查看删除增加镜像源
# 查看显示原来的镜像源
(base) [jiangshan@localhost ~]$ conda config --show
add_anaconda_token: True
add_pip_as_python_dependency: True
aggressive_update_packages:
- ca-certificates
- certifi
- openssl
allow_conda_downgrades: False
allow_cycles: True
allow_non_channel_urls: False
allow_softlinks: False
always_copy: False
always_softlink: False
always_yes: None
anaconda_upload: None
auto_activate_base: True
auto_update_conda: True
bld_path:
changeps1: True
channel_alias: https://conda.anaconda.org
channel_priority: flexible
channels:
- https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/cpu/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- defaults
client_ssl_cert: None
client_ssl_cert_key: None
clobber: False
conda_build: {}
create_default_packages: []
croot: /home/jiangshan/anaconda3/conda-bld
custom_channels:
pkgs/main: https://repo.anaconda.com
pkgs/free: https://repo.anaconda.com
pkgs/r: https://repo.anaconda.com
pkgs/pro: https://repo.anaconda.com
custom_multichannels:
defaults:
- https://repo.anaconda.com/pkgs/main
- https://repo.anaconda.com/pkgs/free
- https://repo.anaconda.com/pkgs/r
local:
debug: False
default_channels:
- https://repo.anaconda.com/pkgs/main
- https://repo.anaconda.com/pkgs/free
- https://repo.anaconda.com/pkgs/r
default_python: 3.7
deps_modifier: not_set
disallowed_packages: []
download_only: False
dry_run: False
enable_private_envs: False
env_prompt: ({default_env})
envs_dirs:
- /home/jiangshan/anaconda3/envs
- /home/jiangshan/.conda/envs
error_upload_url: https://conda.io/conda-post/unexpected-error
extra_safety_checks: False
force: False
force_32bit: False
force_reinstall: False
force_remove: False
ignore_pinned: False
json: False
local_repodata_ttl: 1
migrated_channel_aliases: []
migrated_custom_channels: {}
non_admin_enabled: True
notify_outdated_conda: True
offline: False
override_channels_enabled: True
path_conflict: clobber
pinned_packages: []
pip_interop_enabled: False
pkgs_dirs:
- /home/jiangshan/anaconda3/pkgs
- /home/jiangshan/.conda/pkgs
proxy_servers: {}
prune: False
quiet: False
remote_connect_timeout_secs: 9.15
remote_max_retries: 3
remote_read_timeout_secs: 60.0
report_errors: None
rollback_enabled: True
root_prefix: /home/jiangshan/anaconda3
safety_checks: warn
sat_solver: pycosat
shortcuts: True
show_channel_urls: True
solver_ignore_timestamps: False
ssl_verify: True
subdir: linux-64
subdirs:
- linux-64
- noarch
target_prefix_override:
track_features: []
update_modifier: update_specs
use_index_cache: False
use_local: False
verbosity: 0
whitelist_channels: []
# 删除旧镜像源
(base) [jiangshan@localhost ~]$ conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/cpu/
# 添加新镜像源
(base) [jiangshan@localhost ~]$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/cpu/
# 设置搜索时显示通道地址
(base) [jiangshan@localhost ~]$ conda config --set show_channel_urls yes
anconda+用conda创建python虚拟环境
Anaconda与conda区别
conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。 conda的设计理念——conda将几乎所有的工具、第三方包都当做package对待,甚至包括python和conda自身 Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等。
1、首先在所在系统中安装Anaconda。可以打开命令行输入conda -V检验是否安装以及当前conda的版本。
2、conda常用的命令。
1)conda list 查看安装了哪些包。
2)conda env list 或 conda info -e 查看当前存在哪些虚拟环境
3)conda update conda 检查更新当前conda
3、创建Python虚拟环境。
使用 conda create -n your_env_name python=X.X(2.7、3.6等) anaconda 命令创建python版本为X.X、名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装目录envs文件下找到。
# 指定python版本为2.7,注意至少需要指定python版本或者要安装的包# 后一种情况下,自动安装最新python版本
conda create -n env_name python=2.7
# 同时安装必要的包
conda create -n env_name numpy matplotlib python=2.7
4、使用激活(或切换不同python版本)的虚拟环境。
打开命令行输入python --version可以检查当前python的版本。
使用如下命令即可 激活你的虚拟环境(即将python的版本改变)。
Linux: source activate your_env_name(虚拟环境名称)
Windows: activate your_env_name(虚拟环境名称)
这是再使用python --version可以检查当前python版本是否为想要的。
5、对虚拟环境中安装额外的包。
使用命令conda install -n your_env_name [package]即可安装package到your_env_name中
6、关闭虚拟环境(即从当前环境退出返回使用PATH环境中的默认python版本)。
使用如下命令即可。
deactivate env_name,也可以使用`activate root`切回root环境
Linux下使用 source deactivate
7、删除虚拟环境。
移除环境
使用命令conda remove -n your_env_name(虚拟环境名称) --all, 即可删除。
删除环境中的某个包。
使用命令conda remove --name $your_env_name $package_name 即可。
8、设置国内镜像
如果需要安装很多packages,你会发现conda下载的速度经常很慢,因为Anaconda.org的服务器在国外。所幸的是,清华TUNA镜像源有Anaconda仓库的镜像,我们将其加入conda的配置即可:
# 添加Anaconda的TUNA镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# TUNA的help中镜像地址加有引号,需要去掉
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes
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 三方源
Conda Forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
msys2
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
bioconda
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
menpo
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
pytorch
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
PIP命令及虚拟环境的建立
以下命令是pip命令,是帮助我们安装解决python所需要的环境包
列出已经安装的包
pip list
安装要安装的包
pip install 包名
安装特定版本
pip install django==1.1.5 #=在python中代表赋值的作用,只有==才是等于的意思
导出python环境
pip freeze > requestment.txt #可以获取到当前环境下的所有安装包的版本,有助于以后布置别台电脑,可以避免bug,从而导入跟现在一样的环境。
从导出的python环境中安装所需要的包
pip install –r requestment.txt
卸载导出的python环境中的包
pip uinstall –r requestment.txt
显示可升级的包
pip list –o
下载包而不安装
pip install <包名> -d <目录> 或 pip install -d <目录> -r requirements.txt
更换国内pypi镜像(推荐临时使用这些源)
pip install <包名> -i http://pypi.v2ex.com/simple
阿里:https://mirrors.aliyun.com/pypi/simple
豆瓣:http://pypi.douban.com/simple
中国科学技术大学:http://pypi.mirrors.ustc.edu.cn/simple/
指定全局安装源 (不想每一次加 -i)
在linux和macos,配置文件为:$HOME/.pip/pip.conf
在windows上,配置文件为:%HOME%\pip\pip.ini
(1):在windows文件管理器中,输入 %APPDATA%
(2):会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件
(3):在新建的pip.ini文件中输入以下内容,搞定文件路径:"C:\Users\Administrator\AppData\Roaming\pip\pip.ini"
[global]
timeout = 6000
index-url = http://pypi.douban.com/simple
为什么需要虚拟环境(一个环境下只能有一个软件包的版本存在)
如果你现在用Django 1.10.x写了个网站,然后你的领导跟你说,之前有一个旧项目是用Django 0.9开发的,让你来维护,但是Django 1.10不再兼容Django 0.9的一些语法了。这时候就会碰到一个问题,我如何在我的电脑中同时拥有Django 1.10和Django 0.9两套环境呢?这时候我们就可以通过虚拟环境来解决这个问题。
安装虚拟环境
virtualenv是用来创建虚拟环境的软件工具,我们可以通过pip或者pip3来安装
pip install virtualenv #windows
pip3 install virtualenv
创建虚拟环境
创建虚拟环境非常简单,通过以下命令就可以创建了:
virtualenv [虚拟环境的名字]
进入虚拟环境
虚拟环境创建好了以后,那么可以进入到这个虚拟环境中,然后安装一些第三方包,进入虚拟环境在不同的操作系统中有不同的方式,一般分为两种,第一种是Windows,第二种是*nix:
windows进入虚拟环境:进入到虚拟环境的Scripts文件夹中,然后执行activate。
linux进入虚拟环境
source /path/to/virtualenv/bin/activate
一旦你进入到了这个虚拟环境中,你安装包,卸载包都是在这个虚拟环境中,不会影响到外面的环境。
退出虚拟环境
退出虚拟环境很简单,通过一个命令就可以完成
deactivate
创建虚拟环境的时候指定Python解释器
在电脑的环境变量中,一般是不会去更改一些环境变量的顺序的。也就是说比如你的Python2/Scripts在Python3/Scripts的前面,那么你不会经常去更改他们的位置。但是这时候我确实是想在创建虚拟环境的时候用Python3这个版本,这时候可以通过-p参数来指定具体的Python解释器:
virtualenv -p C:\Python36\python.exe [virutalenv name]
virtualenvwrapper
virtualenvwrapper这个软件包可以让我们管理虚拟环境变得更加简单。不用再跑到某个目录下通过virtualenv来创建虚拟环境,并且激活的时候也要跑到具体的目录下去激活。
安装virtualenvwrapper
linux
pip install virtualenvwrapper
windows
pip install virtualenvwrapper-win
virtualenvwrapper基本使用:
创建虚拟环境
mkvirtualenv my_env
那么会在你当前用户下创建一个Env的文件夹,然后将这个虚拟环境安装到这个目录下。
如果你电脑中安装了python2和python3,并且两个版本中都安装了virtualenvwrapper,那么将会使用环境变量中第一个出现的Python版本来作为这个虚拟环境的Python解释器。
切换到某个虚拟环境
workon my_env
退出当前虚拟环境
deactivate
删除某个虚拟环境
rmvirtualenv my_env
列出所有虚拟环境
lsvirtualenv
进入到虚拟环境所在的目录
cdvirtualenv
修改mkvirtualenv的默认路径:
在我的电脑->右键->属性->高级系统设置->环境变量->系统变量中添加一个参数WORKON_HOME,将这个参数的值设置为你需要的路径。
创建虚拟环境的时候指定Python版本:
在使用mkvirtualenv的时候,可以指定--python的参数来指定具体的python路径:
mkvirtualenv --python==C:\Python36\python.exe hy_env
例子:
conda env list //查看当前安装的虚拟环境
conda config --show//查看当前环境的配置
conda config --remove-key channels//恢复默认镜像源
conda create -n py3 python=3.7//创建py3.7版本的虚拟环境
conda install -n py3 flask //在创建的新环境py3下安装包
参考资料:
- 1、https://www.jianshu.com/p/17756a86cf63
- 2、https://www.jianshu.com/p/af03e644b46b
- 3、https://www.jianshu.com/p/acab8ea232b1
- 4、https://www.cnblogs.com/jeshy/p/10532983.html
- 5、https://blog.csdn.net/just_h/article/details/90451935
- 6、https://blog.csdn.net/Jack_kun/article/details/91561268
- 7、https://www.cnblogs.com/shuaiyin/p/10922467.html
- 8、https://blog.csdn.net/lanchunhui/article/details/51583826?locationNum=2&fps=1