python多环境管理_python 环境管理方法 (整理自互联网)

需求分析

不同的工程 依赖 不同版本的库

例如:应用A需要 TensorFlow1.14,而应用B需要 TensorFlow2.x

不想让物理环境里充斥各种各样的库,引发未来的依赖灾难

解决思路

对于不同的工程使用不同的虚拟环境,保持开发环境以及宿主环境的清洁

每个应用可能需要各自拥有一套“独立”的Python运行环境

解决方案

基本常识

以anaconda为例,讲解各种目录

./Lib

存放自带python库

./Lib/site-packages

存放pip3 install 后的各种第三方库,

导出当前python环境的包

pip freeze > requirements.txt

virtualenv

在系统中建立多个不同并且相互不干扰的虚拟环境

用来为一个应用创建一套“隔离”的Python运行环境

轻量级第三方虚拟环境管理工具,不像Anaconda大小达上百M,virtualenv大小只有10M左右

安装&&配置

# 下载pip的包 v20.0.5

$ pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

# 升级pip工具

$ pip3 install --upgrade pip

基本参数

usage: virtualenv [--version] [--with-traceback] [-v | -q] [--discovery {builtin}] [-p py] [--creator {builtin,cpython3-win,venv}] [--seeder {app-data,pip}] [--no-seed] [--activators comma_separated_list] [--clear] [--system-site-packages]

[--symlinks | --copies] [--download | --no-download] [--extra-search-dir d [d ...]] [--pip version] [--setuptools version] [--wheel version] [--no-pip] [--no-setuptools] [--no-wheel] [--clear-app-data] [--symlink-app-data]

[--prompt prompt] [-h]

dest

-p # 创建python的拷贝

创建环境

首先创建目录

# 创建目录

$ mkdir myproject

$ cd myproject/

各类创建环境方法

# 创建独立的python环境,命名为venv

$ virtualenv venv

会在当前的目录中创建一个文件夹venv,包含:

python可执行文件,在 /Scripts

pip库的一份拷贝,在 /Lib/site-packages

这样就可以安装其他包,环境名字可以是任意的

# 指定python版本

# 只能使用本机存在的python版本创建虚拟环境

virtualenv -p

Python3.3以上的版本通过venv模块原生支持虚拟环境

# 当前目录创建

python -m evnv .

# 当前目录指定文件夹名

python -m evnv

注意:

不需要加–no-site-packages

* 最新的virtualenv不加–no-site-packages也不会读取系统包

* 高版本弃用该选项,会直接报错(如 20.0.5)

虚拟环境就是一个文件夹

* 如果要删除,直接删除文件夹(退出该虚拟环境)

激活/进入 环境

venv\Scripts\activate.bat

原理:修改相关环境变量,让命令python和pip均指向当前的virtualenv环境

退出环境

.\venv\Scripts\deactivate.bat

virtualenvwrapper

virtualenv缺点

每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate

需要记住每个虚拟环境所在的目录

为了更简便的切换和管理virtualenv环境,可以借助virtualenvwrapper扩展包,统一管理虚拟环境的目录,并且省去了source的步骤

安装

pip install virtualenvwrapper-win

WORKON_HOME默认的路径是 %USERPROFILE%\Envs

相关命令

# 创建虚拟环境

mkvirtualenv new_env

# 使用虚拟环境

workon new_env

# 退出虚拟环境

deactivate

# 删除虚拟环境

rmvirtualenv new_env

# 查看所有虚拟环境

lsvirtualenv

pipenv

Pipenv 是 Python 项目的依赖管理器。

如果您熟悉 Node.js 的 npm 或 Ruby 的 bundler,那么它们在思路上与这些工具类似。

尽管 pip 可以安装 Python 包, 但仍推荐使用 Pipenv,因为它是一种更高级的工具,可简化依赖关系管理的常见使用情况。

使用方法

创建项目目录,之后有 pipenv 安装包

pipenv install xxx

运行脚本

pipenv run python xx,py

生成新的shell

pipenv shell

conda

如果你需要的包要求不同版本的Python,你无需切换到不同的环境,因为conda同样是一个环境管理器。仅需要几条命令,你可以创建一个完全独立的环境来运行不同的Python版本,同时继续在你常规的环境中使用你常用的Python版本。 ——conda官方网站

vs pip

conda:比较方便地在不同环境之间进行切换,环境管理较为简单。

conda结合了pip和virtualenv的功能。

conda 本身是一个完整的程序,虽然是被用来管理 python 环境,但它本身不是 python 的一个包,也不依赖 python。

pip 或者 pipenv 本身是 python 的一个工具包,必须先安装 python 才能使用

环境管理

很多跟在--后边常用的命令选项,可以被略写为一个短线加命令首字母。所以--name选项和-n的作用是一样的。通过conda -h或conda –-help来看大量的缩写。

查看环境

# 查看当前环境列表, 处于激活状态的环境旁有 * 的字样,自身环境为 base

conda env list

conda info -e

conda info --envs

# 导出环境yaml, 类似于 pip freeze

conda env export > environment.yaml

创建环境

# 新建名为 newenv 的环境

# 创建跟当前系统python相同版本的 环境

conda create --name newenv

# 指定新环境中的 python 版本为 3.6

# 只带有最基本的包,是一个纯净的环境

conda create --name newenv python=3.6

# 带包

conda create -n myenv python=3.6 scipy=0.15.0 astroid babel

不想带默认包 --no-default-packages

conda create --no-default-packages -n myenv python

以 base 环境为基准,复制一个新环境

# 起名为 newenv。这样很多的包就可以不必重新安装了

conda create -n newenv --clone base

基于配置文件创建

conda env create -f .../environment.yaml

删除环境

# 删除一个已有的环境

conda remove --name newenv --all

环境切换

conda 4.6+

# 进入指定环境

conda activate newenv

# 在环境中,输入此命令退出

conda deactivate

解决powershell无法激活问题

Power Shell并不兼容anaconda的虚拟环境!

调出 PowerShell 管理员模式

# 安装PSCondaEnvs包

conda install -n root -c pscondaenvs pscondaenvs

# 更改PowerShell 的安全策略

Set-ExecutionPolicy RemoteSigned

# 激活环境,需要去掉原命令中开头的conda

activate 环境名

# 退出环境

deactivate

经过上述设置后,一启动powershell就自动激活base环境,如果不想,则

# 取消自动激活 base

conda config --set auto_activate_base false

# 自动激活 base

conda config --set auto_activate_base true

包管理

查看当前源仓库地址

conda config --show channels

指定国内源

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 list # 查看已经安装的包

conda update conda # 升级conda自身

conda search requests # 查询某个包

conda install requests # 安装新包

conda install -n test requests # 将包安装到指定环境

conda update --all # 更新所有包

conda update requests # 升级包

conda remove requests # 移除包

conda remove -n test requests # 从指定环境中移除包

conda 不提供检查可更新的包的命令,update 所有包时会有提示,列出所有可更新的包,并让用户确认是否全部更新。

conda install 安装包的远程仓库与 pip 的不一样

有一些包不一定能使用 conda 安装,比如 tushare

这时在环境中使用 pip install 即可

在 conda 中使用 pip 安装的包

不归属于 conda 管理,conda 也不会识别出来

必须进入环境后用 pip 命令才能看见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值