python版本管理器-pyenv

pyenv是什么? 能干什么?

pyenv是一个forked自ruby社区的简单、低调、遵循UNIX哲学的Python环境管理工具, 它可以轻松切换全局解释器版本, 同时结合vitualenv插件可以方便的管理对应的包源

pyenv 是一个 python 版本管理工具,可以方便的在工作环境中安装、管理和切换不同版本的 python,结合 pyenv-virtualenv 插件,能够方便的创建和管理 python 虚拟环境,在虚拟环境中的各种操作,并不会影响到系统的正常运行,有效防止乱装 python 版本导致系统崩溃等问题的发生。

安装pyenv

github官网:

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

国内安装:

curl -L https://gitee.com/jordanxu/pyenv-installer/raw/master/bin/pyenv-installer | bash

cat .bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
fi

使用pyenv安装python

当我们使用pyenv安装python的时候,默认将会去官网下载python,这时国内网络是不通的,解决办法:

自己手动去官网下载所需的python版本,之后上传到 ~/.pyenv/cache目录下:

首先安装python依赖:

yum install gcc make zlib-devel -y
yum groupinstall "Development Tools" -y
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel -y

安装python:

ls ~/.pyenv/cache/
Python-3.8.20.tar.xz

pyenv install 3.8.20

pyenv version
pyenv versions
pyenv global 3.8.20

命令

常用命令:
pyenv version:查看当前版本
pyenv versions:查看所有版本
pyenv install --list:查看所有可安装的版本
pyenv install 3.6.5:安装指定版本
pyenv rehash:安装新版本后rehash一下
pyenv uninstall 3.5.2 :删除指定版本
pyenv global 3.6.5:指定全局版本
pyenv global 3.6.5 2.7.14:指定多个全局版本, 3版本优先


其他命令:
pyenv --version:显示pyenv版本
pyenv commands:查看所有pyenv命令
pyenv version-file/version-name/version-origin:当前Python版本对应的文件/名字/位置
pyenv which:列出可执行文件的绝对路径,比如pyenv which python可以列出python命令的绝对路径
pyenv whence:列出已安装的一个范围内的Python版本,比如列出本地安装的Python2到Python3的版本,可以使用pyenv whence 2to3
pyenv shims:列出当前存在的shims(pyenv的工作原理就是在一个叫shims的目录下创建Python解释器的“假版本”,寻找Python应用时先从该目录查找)
pyenv exec:使用特定Python版本执行某条命令
pyenv hooks:列出给出的pyenv命令的钩子脚本
pyenv init:配置shell环境
pyenv local:为某个应用设置特定的Python版本
pyenv prefix:显示对应Python版本的路径前缀
pyenv root:显示pyenv根目录
pyenv shell:为某个shell设置特定的Python版本(与pyenv local类似)

pyenv-virtualenv

pyenv-virtualenv 是一个管理 python 虚拟环境的 pyenv 插件,具体可以查看 pyenv-virtualenv 文档

pyenv-virtualenv 的安装

git clone https://github.com/pyenv/pyenv-virtualenv.git $.pyenv/plugins/pyenv-virtualenv

克隆完成后添加如下到shell配置文件(mac的话是.zshrc)

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

使用

# 创建一个3.8.20版本的虚拟环境, 命名为v3.8.20env, 然后激活虚拟环境
pyenv virtualenv 3.8.20 v3.8.20env  #创建虚拟环境
pyenv activate v3.8.20env       #激活虚拟环境
pyenv deactivate v3.8.20env   #关闭虚拟环境


pyenv virtualenvs   #列出所有虚拟环境
pyenv uninstall myproject-env  #删除虚拟环境

当切换python解释器的时候对应的pip和包库也会一并切换过去, 而且可以为指定版本的解释器创建项目所需的虚拟环境, 切换的时候也异常简单, 个人常用的做法是为每个项目创建不同的虚拟环境, 当进入该环境的时候就可以随便浪而不用担心影响到其它项目

Python虚拟环境

在 Python 中,有几种工具可以用来创建和管理虚拟环境,其中两个最常用的是 venv 和 virtualenv。同时,也有一些第三方工具如 conda(用于 Conda 环境)和 pipenv(用于项目环境)。

venv

venv 是 Python 内置的虚拟环境创建工具。它通常用于创建轻量级的虚拟环境。要创建和激活虚拟环境,可以执行以下命令

# 创建虚拟环境
python -m venv myenv

# 激活虚拟环境(在 Windows 上使用 activate,其他系统使用 source)
source myenv/bin/activate  # Linux/Mac
# 或者
myenv\Scripts\activate      # Windows

# 在虚拟环境中安装包,执行其他操作

# 退出虚拟环境
deactivate

# 删除虚拟环境,虚拟环境本质是一个目录,直接删除其文件夹即可
rm -rf myenv/

virtualenv

virtualenv 是一个第三方的虚拟环境创建工具。如果你的 Python 版本较旧,或者想要一些 virtualenv 特有的功能,你可以使用它

# 安装 virtualenv
pip install virtualenv

# 创建虚拟环境
virtualenv myenv

# 激活虚拟环境
source myenv/bin/activate  # Linux/Mac
# 或者
myenv\Scripts\activate      # Windows

# 在虚拟环境中安装包,执行其他操作

# 退出虚拟环境
deactivate

pipenv

pipenv 是一个专门用于项目环境的工具,它集成了包管理和虚拟环境的创建:

# 安装 pipenv
pip install pipenv

# 进入项目目录
cd myproject

# 创建虚拟环境并安装依赖
pipenv install

# 激活虚拟环境
pipenv shell

# 在虚拟环境中执行其他操作

# 退出虚拟环境
exit

Miniconda工具

Miniconda是一款小巧的python环境管理工具,安装包大约只有70M多点,其安装程序中包含conda软件包管理器和Python。一旦安装了Miniconda,就可以使用conda命令安装任何其他软件工具包并创建环境等。

方便的创建多个python虚拟环境,方便多个python项目同时开发的时候,每个项目都有自己独立的python开发环境。相当于在一个园区,建立很多仓库,每个仓库都相互独立,可以安装不同的python环境,防止python环境不对应导致代码运行出错。

安装

wget https://mirrors.ustc.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

配置

安装后,会产生一个miniconda3文件夹,进入到其中的bin文件夹,可以看到可执行文件conda,具体的操作如下。

cd miniconda3/bin/
ls
vim ~/.bashrc
export PATH="/root/miniconda3/bin:$PATH"

配置源

#配置bioconda,添加清华源镜像 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda 
conda config --set show_channel_urls yes 

#查看镜像源
conda config --show-sources

#删除源
conda config --remove channels  +源路径
conda config --set show_channel_urls yes

环境管理命令

常用的conda命令如下:

conda --version #显示conda的版本号
conda info --envs 或  conda env list  #查看环境
conda install --prefix=<path> <package name>  #安装软件到指定文件夹
conda create -n test_env python=3 sra-tools         # 创建test_env流程环境,指定python版本为3,同时下载sra-tools 软件     
conda env list    #查看环境
conda activate  test_env     #进入conda 环境
conda deactivate             #退出当前conda环境

如果想重命名环境:先新建clone再进行删除
conda create -n test2_env --clone test_env
conda remove -n test_env --all

包管理命令

包的安装路径:

~/miniconda3/envs/ilogstash/lib/python3.10/site-packages
conda install (-y)软件名            # 安装软件
conda install 软件名=版本号           # 安装特定版本软件
conda search 软件名                   #搜索软件
conda list                           # 列出已安装软件
conda update  软件名                   #更新软件 
conda remove 软件名                   #卸载软件

pip包管理工具

pip介绍

pip,是package installer for Python的简称,翻译一下就是Python包管理工具。顾名思义,pip可以管理Python包,包括查找、下载、安装、卸载等功能。Python3.4及以后的版本均已内置pip,不需要另外安装。

Python拥有大量的第三方库,而这些库都被统一放在一个“仓库"里,这个仓库就是PyPI,全名是Python package index,

当在写Python程序需要用到某个Python包时,需要确保当前使用的Python环境已经安装了这个Python包中,而使用pip就可以查看是否安装、以及安装等操作。

pip常用命令

列出已经安装的Python包列表
pip list

安装某个Python包
pip install numpy
pip install numpy-1.21.6-cp37-cp37m-win_amd64.whl    # 需要提前下载好离线安装包
pip install -r requirements.txt

卸载某个Python包
pip uninstall numpy

输出当前Python环境下所有已经安装的Python包,经常在生成项目依赖包列表requirements.txt文件时使用。
pip freeze > requirements.txt

显示某个已安装Python包的信息
pip show numpy

检查某个已安装Python包是否具有兼容的依赖项
pip check numpy

设置镜像源

# 配置源
pip config set global.index-url  https://mirrors.aliyun.com/pypi/simple  

# 输出当前pip源
pip config list   

# 查看源
pip config get global.index-url 

# 删除某个源
pip config unset global.index-url 

# 用一个编辑器打开配置文件进行编辑,如果没有指定--editor参数,会用环境遍历EDITOR的值作为编辑器
pip config edit

results matching ""

    No results matching ""