一文弄懂Python环境安装管理

之前装过py环境,不过也是随便装装,知道有很多环境管理方式,这次一次性全部弄懂!
python的管理可以分为三个部分:包管理、版本管理、环境管理。但是基于工具基本可以一次性解决。
切换虚拟环境实际上就是操作了Path变量。
一般来说开发完成后会通过pip freeze > requirement.txt来导出依赖,之后再服务器上面创建一个虚拟环境,并利用这个txt来在虚拟环境中安装依赖
现在常用的有这几个pip(包管理)、conda、venc、poetry等
如果是新手建议随便选一个先用着,等玩明白了再换也不迟,没必要浪费太多时间纠结。

pip

每一个版本的python对应自己的pip工具,使用前要知道自己用的是什么版本的pip,不然依赖都装不到对的地方。
pip xxx就是直接调用当前环境的python
python -m pip xxx也是一样,但为什么要用这个呢?有兴趣的同学可以直接看参考中第三篇文章,或者听我接下来简单说说

DO NOT install into your global Python interpreter! ALWAYS try to use an environment when developing locally!
直接调用pip可能是调用最近安装的py版本,有可能和你想用的版本不一样,但是如果使用python3.8 -m pip 那就可以确定是3.8的pip,并且使用这个命令可以让pip自更新python -m pip install -upgrade pip因为在windows环境中不允许覆盖pip.exe,这条命令通过python执行所以不会有问题,就是经典的“你不能修改文件,因为文件正在运行”。而且这样的好处在于不会因为失误导致版本使用错误,同时也保证了版本在语义上的唯一性。作者也十分强调使用虚拟环境。不要污染宿主环境的包,避免环境崩溃。

安装packages的几种方式

  1. python -m pip install pack==/>= 1.1
  2. 使用requirement.txt, python -m pip install -r requirement.txt
  3. 通过wheel

基础命令

pip search xxx搜索包
pip list列出已安装的包
pip list --outdated列出过期的包和最新可用版本
pip show xxx显示某个包的详细信息
pip freeze > xxx导出已安装的依赖包

配置

有三种方式配置,优先级降序

  1. 命令行pip config
  2. 环境变量
  3. 配置文件

配置文件的范围有三种,可以通过pip config -debug查询,这几种会被依次读取覆盖,如果环境变量中存在PIP_CONFIG_FILE指定的配置文件,那么这个是第一个被读取的

  1. global 全局配置
  2. user 用户级别
  3. site 环境级别

管理工具

在这里插入图片描述

anaconda主要用于科学计算,是一个包罗万象的版本,当然也体现在大小上。
miniconda就是轻量版本,只有python和conda
conda就是管理的核心

安装

brew info miniconda 查看版本,并且得知安装后的初始化操作
brew install miniconda安装miniconda,并且之后用info得到的初始化操作进行初始化,然后按照提示重新打开终端
conda list没问题的话就可以看到已安装包列表了。

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/homebrew/Caskroom/miniconda/base/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/opt/homebrew/Caskroom/miniconda/base/etc/profile.d/conda.sh" ]; then
        . "/opt/homebrew/Caskroom/miniconda/base/etc/profile.d/conda.sh"
    else
        export PATH="/opt/homebrew/Caskroom/miniconda/base/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

如果要卸载的话记得手动去掉这一段和相关目录

基础命令

conda info查看conda相关信息,可以配合-e查看环境信息,默认已经有base环境
conda create创建环境,使用 --name 可以命名,对应remove命令。创建环境的时候可以通过后续跟一个python=x.x.x来确定新环境的python版本。
conda activate xxx激活环境,不带名字的调用就可以退出环境,也可以使用 conda deactivate
conda update conda自更新
conda config可以修改配置文件(默认不存在),也可以直接修改~/.condarc注意保持yml格式
--yes来避免繁琐的连续询问

Conda和Poetry

conda对比venv来说更加强大,但是我还是先选择venv,毕竟方便,是内置的。但是conda会导致依赖往往过大,而且运行速度也不尽人意
portry则是和pip秉持一样的标准,所以包管理基本一致,而conda存在一些包管理上的问题,例如有的包没法直接安装、依赖不能跟踪。
通常会用虚拟环境来隔离各个不同版本,每个环境间的包互相隔离。但是poetry的虚拟环境无法区分python版本,所以有时会二者结合使用

virtualenv和venv

这俩是内置的工具,python2用 virtualenv, python3是venv,都是一个东西,顺带一提pip2早在2020年就停止维护了。功能上也不及前面俩大哥,只能说强在内置。表现在终端上就是有个venv的开头,通过deactivate就可以退出虚拟环境。

参考文章

  1. https://zhuanlan.zhihu.com/p/637760194
  2. https://www.360doc.com/content/23/0808/07/46368139_1091613202.shtml
  3. https://snarky.ca/why-you-should-use-python-m-pip/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值