Anaconda入门使用总结


Posted in Python onApril 05, 2018

Python易用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,特别是当你使用Windows的时候。为了解决这些问题,有不少发行版的Python,比如WinPython、Anaconda等,这些发行版将python和许多常用的package打包,方便pythoners直接使用,此外,还有virtualenv、pyenv等工具管理虚拟环境。

个人尝试了很多类似的发行版,最终选择了Anaconda,因为其强大而方便的包管理与环境管理的功能。该文主要介绍下Anaconda,对Anaconda的理解,并简要总结下相关的操作。

Anaconda概述

Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。

这里先解释下conda、anaconda这些概念的差别。conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。其实还有Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。

进入下文之前,说明一下conda的设计理念——conda将几乎所有的工具、第三方包都当做package对待,甚至包括python和conda自身!因此,conda打破了包管理与环境管理的约束,能非常方便地安装各种版本python、各种package并方便地切换。

Anaconda的安装

Anaconda的下载页参见官网下载,Linux、Mac、Windows均支持。

安装时,会发现有两个不同版本的Anaconda,分别对应Python 2.7和Python 3.5,两个版本其实除了这点区别外其他都一样。后面我们会看到,安装哪个版本并不本质,因为通过环境管理,我们可以很方便地切换运行时的Python版本。(由于我常用的Python是2.7和3.4,因此倾向于直接安装Python 2.7对应的Anaconda)

下载后直接按照说明安装即可。这里想提醒一点:尽量按照Anaconda默认的行为安装——不使用root权限,仅为个人安装,安装目录设置在个人主目录下(Windows就无所谓了)。这样的好处是,同一台机器上的不同用户完全可以安装、配置自己的Anaconda,不会互相影响。

对于Mac、Linux系统,Anaconda安装好后,实际上就是在主目录下多了个文件夹(~/anaconda)而已,Windows会写入注册表。安装时,安装程序会把bin目录加入PATH(Linux/Mac写入~/.bashrc,Windows添加到系统变量PATH),这些操作也完全可以自己完成。以Linux/Mac为例,安装完成后设置PATH的操作是

# 将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin
echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc
# 更新bashrc以立即生效
source ~/.bashrc

配置好PATH后,可以通过which condaconda --version命令检查是否正确。假如安装的是Python 2.7对应的版本,运行python --version或python -V可以得到Python 2.7.12 :: Anaconda 4.1.1 (64-bit),也说明该发行版默认的环境是Python 2.7。

Conda的环境管理

Conda的环境管理功能允许我们同时安装若干不同版本的Python,并能自由切换。对于上述安装过程,假设我们采用的是Python 2.7对应的安装包,那么Python 2.7就是默认的环境(默认名字是root,注意这个root不是超级管理员的意思)。

假设我们需要安装Python 3.4,此时,我们需要做的操作如下:

# 创建一个名为python34的环境,指定Python版本是3.4(不用管是3.4.x,conda会为我们自动寻找3.4.x中的最新版本)
conda create --name python34 python=3.4

# 此时,再次输入
python --version
# 可以得到`Python 3.4.5 :: Anaconda 4.1.1 (64-bit)`,即系统已经切换到了3.4的环境

# 如果想返回默认的python 2.7环境,运行
deactivate python34 # for Windows
source deactivate python34 # for Linux & Mac

# 删除一个已有的环境
conda remove --name python34 --all

# 安装好后,使用activate激活某个环境
activate python34 # for Windows
source activate python34 # for Linux & Mac
# 激活后,会发现terminal输入的地方多了python34的字样,实际上,此时系统做的事情就是把默认2.7环境从PATH中去除,再把3.4对应的命令加入PATH

用户安装的不同python环境都会被放在目录~/anaconda/envs下,可以在命令中运行conda info -e查看已安装的环境,当前被激活的环境会显示有一个星号或者括号。

说明:有些用户可能经常使用python 3.4环境,因此直接把~/anaconda/envs/python34下面的bin或者Scripts加入PATH,去除anaconda对应的那个bin目录。这个办法,怎么说呢,也是可以的,但总觉得不是那么elegant……

如果直接按上面说的这么改PATH,你会发现conda命令又找不到了(当然找不到啦,因为conda在~/anaconda/bin里呢),这时候怎么办呢?方法有二:1. 显式地给出conda的绝对地址 2. 在python34环境中也安装conda工具(推荐)。

Conda的包管理

Conda的包管理就比较好理解了,这部分功能与pip类似。

例如,如果需要安装scipy:

# 安装scipy
conda install scipy
# conda会从从远程搜索scipy的相关信息和依赖项目,对于python 3.4,conda会同时安装numpy和mkl(运算加速的库)

# 查看已经安装的packages
conda list
# 最新版的conda是从site-packages文件夹中搜索已经安装的包,不依赖于pip,因此可以显示出通过各种方式安装的包

conda的一些常用操作如下:

# 查看当前环境下已安装的包
conda list

# 查看某个指定环境的已安装包
conda list -n python34

# 查找package信息
conda search numpy

# 安装package
conda install -n python34 numpy
# 如果不用-n指定环境名称,则被安装在当前活跃环境
# 也可以通过-c指定通过某个channel安装

# 更新package
conda update -n python34 numpy

# 删除package
conda remove -n python34 numpy

前面已经提到,conda将conda、python等都视为package,因此,完全可以使用conda来管理conda和python的版本,例如

# 更新conda,保持conda最新
conda update conda

# 更新anaconda
conda update anaconda

# 更新python
conda update python
# 假设当前环境是python 3.4, conda会将python升级为3.4.x系列的当前最新版本

补充:如果创建新的python环境,比如3.4,运行conda create -n python34 python=3.4之后,conda仅安装python 3.4相关的必须项,如python, pip等,如果希望该环境像默认环境那样,安装anaconda集合包,只需要:

# 在当前环境下安装anaconda包集合
conda install anaconda

# 结合创建环境的命令,以上操作可以合并为
conda create -n python34 python=3.4 anaconda
# 也可以不用全部安装,根据需求安装自己需要的package即可

设置国内镜像

如果需要安装很多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

执行完上述命令后,会生成~/.condarc(Linux/Mac)或C:\Users\USER_NAME\.condarc文件,记录着我们对conda的配置,直接手动创建、编辑该文件是相同的效果。

Anaconda具有跨平台、包管理、环境管理的特点,因此很适合快速在新的机器上部署Python环境。总结而言,整套安装、配置流程如下:

  • 下载Anaconda、安装
  • 配置PATH(bashrc或环境变量),更改TUNA镜像源
  • 创建所需的不用版本的python环境
  • Just Try!

cheat-sheet 下载:

Conda cheat sheet

参考资料

  • Anaconda Homepage
  • Anaconda Documentation
  • Conda Docs

用anaconda保证64位和32位的python共存

背景
喵哥想在MFC中调用python脚本,在原来的代码中包含一个只支持x86的库文件(超级核心的文件),原本安装的python是x64的,强行运行程序会出现python头文件里的函数无法解析的错误。考虑到anaconda可以方便的管理python版本,所以采用anaconda来安装32位的python。

Anaconda的一些命令

1.查看当前工作平台:conda info
 

(base) C:\Users\Catlin Cao>conda info
 
     active environment : base
    active env location : F:\Anaconda3
            shell level : 1
       user config file : C:\Users\Catlin Cao\.condarc
 populated config files : C:\Users\Catlin Cao\.condarc
          conda version : 4.5.11
    conda-build version : 3.15.1
         python version : 3.7.0.final.0
       base environment : F:\Anaconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/win-32
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/win-32
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/win-32
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/pro/win-32
                          https://repo.anaconda.com/pkgs/pro/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-32
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : F:\Anaconda3\pkgs32
                          C:\Users\Catlin Cao\AppData\Local\conda\conda\pkgs32
       envs directories : F:\Anaconda3\envs
                          C:\Users\Catlin Cao\AppData\Local\conda\conda\envs
                          C:\Users\Catlin Cao\.conda\envs
               platform : win-32
             user-agent : conda/4.5.11 requests/2.19.1 CPython/3.7.0 Windows/10 Windows/10.0.17134
          administrator : False
             netrc file : None
           offline mode : False

可见此时是64位平台。

2.切换64位和32位:set CONDA_FORCE_32BIT=1是切换到32位;set CONDA_FORCE_32BIT= 是切换到64位。

需要注意的是,这样切换环境对于已经安装的python没有任何影响,即原先是64位的python,现在还是64位,所以需要切换到32位后再安装python,并且安装需要在prompt下进行,在navigator里新建的python默认是64位的。

3.安装python:conda create -n env_name python=3.74,如果需要安装一些包,只需要在name后加上对应的包名称。conda create -n env_name numpy matplotlib python=3.74。

例如我们想安装python3.74 的32位版本

conda create -n python32 python=3.74

4.切换环境:conda activate env_name,conda deactivate env_name。

5.移除环境:conda remove -n env_name --all

6.安装包:activate env_name,conda install pandas。安装anaconda发行版的所有包:conda install anaconda,但是这样会在所有环境都执行这样的操作,所以需要指定安装环境:conda install -n env_name pandas

今天需要调用一个dll动态函数库,但是本地的python是64位的,dll是32位的,直接调用会报错。

OSError: [WinError 193] %1 不是有效的 Win32 应用程序。

 

python版本:3.6
anaconda对于python版本的管理还是很方便的,所以这里用anaconda才实现32位和64位python共存
1、打开anaconda prompt,输入 conda info ,可以看到现在用的是64位的。

Anaconda入门使用总结
2、切换成32位的 set CONDA_FORCE_32BIT=1 可以看出已经切换成32位的了
Anaconda入门使用总结
3、安装32位的python3.6 conda create -n python32 python=3.6
Anaconda入门使用总结
安装完成后在anaconda3文件夹下面会有一个envs文件夹
Anaconda入门使用总结
4、激活环境 conda activate python32 ,如果要取消 conda deactivate python32,如果要删除环境 conda remove -n python32--all
5、如果要在pycharm中使用该环境
Anaconda入门使用总结
点击add local
Anaconda入门使用总结
点击ok就行了

以上的操作都是在Anaconda Prompt里,其实用Anaconda图形界面(Navigator)安装python会更加直观,但是需要注意的是,无论你是否在Prompt里设置了32位的环境,用Navigator安装的python都是64位的,大家可以试一下,有异议欢迎留言交流。

Python 相关文章推荐
Python编码时应该注意的几个情况
Mar 04 Python
python使用正则表达式分析网页中的图片并进行替换的方法
Mar 26 Python
Python中列表和元组的相关语句和方法讲解
Aug 20 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
Python利用openpyxl库遍历Sheet的实例
May 03 Python
python3结合openpyxl库实现excel操作的实例代码
Sep 11 Python
python web自制框架之接受url传递过来的参数实例
Dec 17 Python
使用python实现男神女神颜值打分系统(推荐)
Oct 31 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 Python
Python 制作查询商品历史价格的小工具
Oct 20 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 #Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 #Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 #Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 #Python
python中返回矩阵的行列方法
Apr 04 #Python
python增加矩阵维度的实例讲解
Apr 04 #Python
python实现在pandas.DataFrame添加一行
Apr 04 #Python
You might like
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
JS中的form.submit()不能提交表单的错误原因
2014/10/08 Javascript
jQuery基础知识小结
2014/12/22 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
用python写asp详细讲解
2013/12/16 Python
Python设计模式之中介模式简单示例
2018/01/09 Python
Python内建模块struct实例详解
2018/02/02 Python
Django中的forms组件实例详解
2018/11/08 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
大一新生军训时的自我评价分享
2013/12/05 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
庆祝教师节主持词
2015/07/06 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android