python多版本及依赖包管理

774 阅读2分钟

本文主要讲述如何通过 pyenv 来管理不同版本的 python ,以及如何使用 Pipenv 在同一个python版本实现项目之间依赖包的隔离。

pyenv

Linux下安装

curl https://pyenv.run | bash

验证是否安装成功

# pyenv -v
pyenv 2.3.11

设置环境变量

~/.bashrc 中加入如下内容:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

可以执行如下命令即可立即生效

source ~/.bashrc

前置依赖包安装:

Pyenv的常见用法

查看可安装的python版本

pyenv install --list

当前目录切换python版本

pyenv local 3.11.1

全局切换python版本

pyenv global 3.11.1

查看当前使用的python版本

pyenv versions

安装某个版本的python

  • 前置依赖包安装(已centos为例):

    yum install -y zlib zlib-dev sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++ ncurses-devel  readline-devel 
    
    yum swap openssl-devel openssl11-devel
    
  • 安装固定版本的python

    pyenv install 3.11.1
    

常见安装失败处理方法

ModuleNotFoundError: No module named 'ssl'错误

 CPPFLAGS="$(pkg-config --cflags openssl11)" LDFLAGS="$(pkg-config --libs openssl11)" pyenv install -v 3.11.1

其他常见安装python失败场景

解决方案可以参考官方wiki:

github.com/pyenv/pyenv…

取消局部设置的python版本

pyenv local --unset

pipenv

Pipenv是官方推荐的的python包管理工具,可以实现项目之间依赖的隔离。

安装pipenv

pip install pipenv

常用命令

pipenv install

该命令功能如下:

  • 若项目目录中虚拟环境未创建且无Pipfile文件,将安装虚拟环境并创建Pipfile文件
  • 若项目目录中虚拟环境未创建且有Pipfile文件,将根据Pipfile文件来安装相应python版本和依赖包
  • 若项目目录中虚拟环境已创建且有Pipfile文件,将根据Pipfile文件来安装依赖包

安装python包

pipenv install xxx  # 安装某个python包
# 例: pipenv install requests==2.13.0

卸载python包

pipenv uninstall xxx

显示虚拟环境安装路径

pipenv --venv