前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何利用conda管理python环境

如何利用conda管理python环境

作者头像
bugsuse
发布2020-04-21 17:28:15
1.8K0
发布2020-04-21 17:28:15
举报
文章被收录于专栏:气象杂货铺气象杂货铺

conda包管理器可以创建,导出,列出,移除以及更新python环境,而且python环境可以使用不同版本的python,并且安装不同的安装包。在每一个环境之间进行切换称为激活环境。你也可以和别人共享环境文件。

创建环境

如果只有默认的python环境(即安装anaconda或miniconda时创建的环境),那么就无法执行环境切换操作。因为,执行环境切换操作的前提是至少拥有两个python环境。

使用conda create 命令可以创建新环境:

代码语言:javascript
复制
conda create --name ncl -c conda-forge ncl=6.4.0

# --name  参数用来指定环境名,即新创建的环境名为 ncl
# -c  参数用来指定源通道   conda-forge 为源通道别名
#  ncl=6.4.0  为从源通道下载指定版本的包

上述命令是通过conda安装ncl,目前不支持windows系统安装,而且只支持python2.7版本,不支持python3.x版本。

获取关于 conda create 命令的更多帮助可执行:

代码语言:javascript
复制
conda create --help

#####  主要可选参数项  #######
-y, --yes    直接同意安装
--dry-run    仅显示上述操作会产生什么结果
-f, --force  强制安装
--file FILE  从指定文件读取包版本
-p fullpath  环境完整路径
--use-local  使用本地源构建
-n, --name   环境名
-c CHANNEL   指定通道
--channel-priority     源通道优先于软件包版本
--no-channel-priority  软件包版本优先于源通道

列出所有环境

想要了解目前安装了哪些python环境的时候,可以执行:

代码语言:javascript
复制
conda info --envs
或
conda env list
# 当前环境会有 * 标识

克隆环境

通过以下命令可以创建一个环境的克隆版本:

代码语言:javascript
复制
conda create --name ncl_clone --clone ncl

执行 conda env list 可以查看执行克隆操作后的环境信息。

共享环境

出于某些原因(比如:比如需要对你提供的脚本和库进行测试),可能要和别人共享环境。此时,可以提供一个 .yml 环境文件给共享者。

按照以下步骤生成环境文件:

  • 激活要导出的环境
代码语言:javascript
复制
Linux,OS X : source activate env_name
Windows     : activate env_name
  • 导出环境到文件
代码语言:javascript
复制
conda env export > env_name.yml

注意

如果当前目录下已经存在了 .yml 环境文件,新文件将会覆盖原文件。

通过 .yml 文件创建环境:

代码语言:javascript
复制
conda env create -f env_name.yml

当然你要是不怕麻烦的话,也可以手动创建依赖环境。PS:我怕麻烦,这部分就不说了。

构建相同的conda环境

使用显示说明文件可以在相同的机器或不同机器上的相同操作系统下创建相同的环境。

执行以下命令创建说明文件:

代码语言:javascript
复制
conda list --explicit

文件如下:

代码语言:javascript
复制
# 执行以下命令可以使用此文件创建环境
# $ conda create --name <env> --file <this file>
# platform: osx-64
@EXPLICIT
https://repo.continuum.io/pkgs/free/osx-64/mkl-11.3.3-0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/numpy-1.11.1-py35_0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/openssl-1.0.2h-1.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/pip-8.1.2-py35_0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/python-3.5.2-0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/readline-6.2-2.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/setuptools-25.1.6-py35_0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/sqlite-3.13.0-0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/tk-8.5.18-0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/wheel-0.29.0-py35_0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/xz-5.2.2-0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/zlib-1.2.8-3.tar.bz2

执行 :

代码语言:javascript
复制
conda list --explicit > spec_file_name.txt

可以在当前工作目录下创建说明文件。

使用 spec_file_name.txt 文件可以创建相同的环境:

代码语言:javascript
复制
conda install --name env_name --file spec_file_name.txt

注意:

通过说明文件是无法跨平台创建环境的。说明文件可以看出注释: platform: 行。 通过说明文件创建环境时,conda不会检查依赖,创建之前要确保文件没问题。

加入环境变量

conda环境可以包括已经保存在 Linux,OS X,Windows系统的环境变量。如果你需要一个环境存储密钥用于登录服务器或配置文件,可以通过创建脚本完成此操作。

Linux ,OS X

定位到conda环境目录,进入目录下后创建子目录和文件:

例如:

代码语言:javascript
复制
cd /home/user/anaconda3/envs/analytics
mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
touch ./etc/conda/activate.d/env_vars.sh
touch ./etc/conda/deactivate.d/env_vars.sh

编辑上述两个脚本:

./etc/conda/activate.d/env_vars.sh 文件应该包含以下信息:

代码语言:javascript
复制
#!/bin/sh

export MY_KEY='secret-key-value'
export MY_FILE=/path/to/my/file/

./etc/conda/deactivate.d/env_vars.sh应该包含以下信息:

代码语言:javascript
复制
#!/bin/sh

unset MY_KEY
unset MY_FILE

当你执行 source activate analytics 命令时,环境变量MY_KEY 和 MY_FILE 会被设置为存储到文件中的值;当执行 source deactivate 命令时,会删除上述变量。

Windows

定位到本地环境目录,然后创建子目录和文件:

代码语言:javascript
复制
cd C:\Users\user\Anaconda3\envs\analytics
mkdir .\etc\conda\activate.d
mkdir .\etc\conda\deactivate.d
type NUL > .\etc\conda\activate.d\env_vars.bat
type NUL > .\etc\conda\deactivate.d\env_vars.bat

.\etc\conda\activate.d\env_vars.bat 应该包含以下信息:

代码语言:javascript
复制
set MY_KEY='secret-key-value'
set MY_FILE=C:\path\to\my\file

.\etc\conda\deactivate.d\env_vars.bat 应包含以下信息:

代码语言:javascript
复制
set MY_KEY=
set MY_FILE=

当你执行 activate analytics 命令时,环境变量MY_KEY 和 MY_FILE 会被设置为存储到文件中的值;当执行 deactivate 命令时,会删除上述变量。

注意:

这些环境变量脚本可以是conda包的一部分,当激活了包含包的环境时,这些环境变量也会被激活。脚本文件名可以是任何名称,但是每个包可能都会创建脚本文件,因此要确保文件名不能重复。常见的脚本命名文件方式是:packagename_scriptname.sh/bat。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-29,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 气象杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com