V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
wsgzao
V2EX  ›  Python

使用 Anaconda 实现 Python2 和 Python3 共存及相互转换

  •  
  •   wsgzao ·
    wsgzao · 2018-05-07 14:56:48 +08:00 · 2438 次点击
    这是一个创建于 2180 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    初学 Python 时,总是被 python 的两个不太兼容的版本搞得头昏脑胀。按目前的发展趋势,python 未来的主流版为 python3。但是我们经常会遇到一些很有意思代码使用的是 python2 版本。于是我们需要同时拥有 python2 和 python3 的运行环境。这里介绍一个强大的软件 Anaconda,它实现 python2 和 python3 两个版本的共存,并且可以相互转换。Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。

    使用 Anaconda 轻松解决 Python2 和 Python3 共存

    更新历史

    2018 年 05 月 04 日 - 初稿

    阅读原文 - https://wsgzao.github.io/post/anaconda/

    扩展阅读

    Anaconda - https://anaconda.org/


    为什么选择 Anaconda

    Anaconda 实际上是一个软件发行版,它附带了 conda、Python 和多个科学包及其依赖项。应用程序 conda 是包和环境管理器。Anaconda 的下载文件比较大(约 500 MB ),因为它附带了 Python 中最常用的数据科学包。如果只需要某些包,或者需要节省带宽或存储空间,也可以使用 Miniconda 这个较小的发行版(仅包含 conda 和 Python )。

    什么是 Anaconda

    Anaconda 是专注于数据分析的 Python 发行版本,包含了 conda、Python 等多个科学包及其依赖项。作为好奇宝宝的你是不是发现了一个新名词 conda,那么你一定会问 conda 又是什么呢?

    什么是 conda

    conda 是开源包( packages )和虚拟环境( environment )的管理系统

    packages 管理: 可以使用 conda 来安装、更新 、卸载工具包 ,并且它更关注于数据科学相关的工具包。在安装 anaconda 时就预先集成了像 Numpy、Scipy、pandas、Scikit-learn 这些在数据分析中常用的包。另外值得一提的是,conda 并不仅仅管理 Python 的工具包,它也能安装非 python 的包。比如在新版的 Anaconda 中就可以安装 R 语言的集成开发环境 Rstudio。

    虚拟环境管理: 在 conda 中可以建立多个虚拟环境,用于隔离不同项目所需的不同版本的工具包,以防止版本上的冲突。对纠结于 Python 版本的同学们,我们也可以建立 Python2 和 Python3 两个环境,来分别运行不同版本的 Python 代码。

    知道 是什么( what ) 的同时,我们也需要问一问 为什么( why )。那么,为什么要选择用 Anaconda 呢?

    Anaconda 的优点

    Anaconda 的优点总结起来就八个字:省时省心、分析利器。

    省时省心: Anaconda 通过管理工具包、开发环境、Python 版本,大大简化了你的工作流程。不仅可以方便地安装、更新、卸载工具包,而且安装时能自动安装相应的依赖包,同时还能使用不同的虚拟环境隔离不同要求的项目。

    分析利器: 在 Anaconda 官网中是这么宣传自己的:适用于企业级大数据分析的 Python 工具。其包含了 720 多个数据科学相关的开源包,在数据可视化、机器学习、深度学习等多方面都有涉及。不仅可以做数据分析,甚至可以用在大数据和人工智能领域。

    解决了 是什么 以及 为什么 的问题后,下面让我们看一下 怎么做( How )

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

    Anaconda 中的重要组件

    Anaconda Navigator :用于管理工具包和环境的图形用户界面,后续涉及的众多管理命令也可以在 Navigator 中手工实现。

    Jupyter notebook :基于 web 的交互式计算环境,可以编辑易于人们阅读的文档,用于展示数据分析的过程。

    qtconsole :一个可执行 IPython 的仿终端图形界面程序,相比 Python Shell 界面,qtconsole 可以直接显示代码生成的图形,实现多行代码输入执行,以及内置许多有用的功能和函数。

    spyder :一个使用 Python 语言、跨平台的、科学运算集成开发环境。Spyder 的最大优点就是模仿 MATLAB 的“工作空间”。

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

    安装 Anaconda

    Anaconda 可用于 Windows、Mac OS X 和 Linux。可以在官网上找到安装程序和安装说明 https://www.anaconda.com/download/

    如果计算机上已经安装了 Python,这不会有任何影响。实际上,脚本和程序使用的默认 Python 是 Anaconda 附带的 Python。这里需要注意的是选对自己操作系统对应的版本。安装完后打开 cmd,输入 conda list 可以查看当前安装的内容。输入 conda upgrade --all,可以更新默认环境下的所有包。并在提示是否更新的时候输入 y ( Yes )以便让更新继续。初次安装下的软件包版本一般都比较老旧,因此提前更新可以避免未来不必要的问题。

    本人使用的操作系统:Win10,前往 anaconda 官网下载对应的版本,本人选择的是 Python3.6 + Python 2.7 (实际上下载一个即可,推荐 3.6 )

    设置 Path 变量

    默认安装不会自动添加全局变量,如果有需求可以手动配置 Path,以 Anaconda2 为例

    # 将加入到 PATH 路径
    D:\Programs\Anaconda2
    D:\Programs\Anaconda2\Scripts
    
    # 在 cmd 输入
    python -V
    
    Python 2.7.14 :: Anaconda, Inc.
    

    python2 和 python3 版本转换

    在 win10 环境下进行傻瓜式安装。当安装完成时,计算机便具备了 Python3.6 的环境,推荐使用 Anaconda Prompt 进入命令行

    接下来,在 cmd 的环境下,输入以下命令安装 Python2.7 的环境

    conda create -n python27 python=2.7 anaconda
    

    上面的代码创建了一个名为 python27 的 python2.7 的环境,最后一个参数表示安装 anaconda 下 python2.7 的所有默认包,这个参数时可选的。

    我们进入 cmd 环境,现在默认的 python 版本时 python3.6,只需要一行简单的代码就可以转为 python2.7 的环境

    activate python27
    

    此时本窗口下的 python 版本变为了 python2.7,那么你肯定猜到了恢复到 python3.6 的命令

    deactivate python27
    

    其实呢,一般没有必要恢复到原环境。只要打开一个新的 cmd 窗口,默认的 python 版本就是 python3.6

    Anaconda 镜像

    这里使用了清华大学开源软件镜像站 tuna 提供的资源,在此表示感谢

    https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

    Anaconda 安装包可以到以下地址分流下载 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

    因为 Anaconda.org 的服务器在国外,conda 下载的速度经常很慢。可以设置国内的镜像源来加速:

    # TUNA 还提供了 Anaconda 仓库的镜像,运行以下命令即可添加 Anaconda Python 免费仓库
    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 的配置,直接手动创建、编辑该文件是相同的效果
    # Linux/Mac
    ~/.condarc
    # Windows
    C:\Users\USER_NAME\.condarc
    
    # 运行测试一下吧
    conda install numpy
    
    

    conda 安装 django 实践

    以下操作为 anaconda python3.6 环境下进入 Anaconda Prompt 安装 django1.11 的实践过程

    # 在 python3.6 环境下进入 Anaconda Prompt 创建 django1.x 专用虚拟环境
    conda create -n django1.x
    # 激活专用虚拟环境
    activate django1.x
    # 查看 conda 当前 django 可用版本
    conda search django
    conda install django==1.11.10
    # 切换到虚拟环境家目录
    cd C:\Users\wsgzao\AppData\Local\conda\conda\envs\django1.x
    # 创建项目
    django-admin.py startproject myweb
    # 创建 app
    python manage.py startapp myapp
    # 启动 Django 中的开发服务器
    python manage.py runserver
    # 帮助文档
    python manage.py -h
    # Django 命令
    python manage.py <command> [options]
    
    

    conda 常用命令

    最新版的 conda 是从 site-packages 文件夹中搜索已经安装的包,不依赖于 pip,因此可以显示出通过各种方式安装的包。conda 将 conda、python 等都视为 package,因此完全可以使用 conda 来管理 conda 和 python 的版本

    # 列出所有已安装的包
    conda list
    # 安装软件包,同时它会自动安装此软件包的依赖项 
    conda install package_name
    # 同时安装多个包
    conda install numpy pandas
    # 安装指定版本的包
    conda install python=2.7
    # 安装离线包
    conda install /package-path/package-filename.tar.bz2
    # 卸载包
    conda remove package_name
    # 更新环境中的所有已安装的包
    conda update/upgrade --all
    # 更新 conda,保持 conda 最新
    conda update conda
    # 更新 anaconda
    conda update anaconda
    # 更新 python
    conda update python
    # 查看 conda 安装信息
    conda info
    # 查看 conda 帮助
    conda help
    # 搜索可以安装的包
    conda search package_name
    # 创建 conda 虚拟环境
    conda create -n env_name
    # 在这里,-n env_name 设置环境的名称(-n 是指名称),而 list of packages 是要安装在环境中的包的列表
    conda create -n env_name list of packages
    # 可以创建具有特定 Python 版本的环境
    conda create -n py2.7.14 python=2.7.14
    # 查看 conda 版本
    conda -V
    
    # 进入环境
    # linux 下用 
    source activate env_name
    # windows 下用
    activate env_name
    
    # 离开环境
    # linux 下用 
    source deactivate
    # windows 下用
    deactivate
    
    # 列出环境
    conda env list
    # 删除环境
    conda env remove -n env_name
    # 导出环境将包保存为 YAML,输出环境中的所有包的名称(包括 Python 版本)
    conda env export > environment.yaml
    # 加载环境
    conda env create -f environment.yaml
    
    5 条回复    2018-05-07 19:58:17 +08:00
    WoodenRobot
        1
    WoodenRobot  
       2018-05-07 17:36:08 +08:00
    pyenv 了解一下
    kavana
        2
    kavana  
       2018-05-07 19:24:27 +08:00
    收藏,谢谢
    julyclyde
        3
    julyclyde  
       2018-05-07 19:48:19 +08:00
    spyder 似乎不“属于” anaconda
    而是包含了 anaconda
    easylee
        4
    easylee  
       2018-05-07 19:49:22 +08:00 via Android
    刚开始入门机器学习的时候,必备利器。
    peteryjc
        5
    peteryjc  
       2018-05-07 19:58:17 +08:00
    我还是觉得 pyenv 舒服一点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5570 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:42 · PVG 14:42 · LAX 23:42 · JFK 02:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.