前言
在实际的python开发生产环境中,每个工程项目一般使用的python版本或者环境是不同的,需要一套合适的python版本环境管理工具。
接下来是对python版本管理工具的一些理解和简单介绍。
工具对比
工具 | 简介 |
virtualenv | 管理同一python版本的不同开发环境,属于python的一个工具包。 |
pyenv | 管理系统python版本,同一个系统,python多版本共存,可以方便的切换系统默认python环境。其中有一个pyenv-virtualenv工具,和virtualenv作用雷同。如果要创建虚拟环境,更好的方式是使用 |
conda | anaconda,miniconda。管理python版本,与pyenv不同的是,conda使用虚拟环境管理python版本,同时有python包管理功能。其中集成了科学计算相关的包。 |
其中Pyenv,除了可以安装Python版本,还可以安装anaconda,miniconda等工具。
使用
Pyenv(推荐)
推荐使用pyenv + python -m venv
,也可以使用pyenv + virtualenv。
pyenv管理python版本;
每个python版本中创建虚拟环境的常用方式有两种:
1、直接使用python -m venv myvenv
创建该python版本的虚拟环境。
2、安装并使用virtualenv创建该python版本的虚拟环境。
Anaconda
Anaconda,使用用户界面创建虚拟环境和查看虚拟环境列表比较方便。但是部分python包兼容性不太好。
Linux系统下使用 conda activate <env_name>
切换虚拟环境,使用用户界面或者pip管理环境中的python包。
pyenv
安装
主要安装步骤
1、选择安装目录,推荐**$HOME/.pyenv
**,执行命令:git clone https://github.com/pyenv/pyenv.git ~/.pyenv
2、设置环境变量**PYENV_ROOT
**,执行命令:
CentOS / Mac OS X
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
Ubuntu
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
3、增加pyenv init
到你的shell,命令:
CentOS / Mac OS X
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
Ubuntu
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
4、重启shell,使改变生效:exec "$SHELL"
5、安装Python构建依赖,执行命令:
Mac OS X
brew install openssl readline sqlite3 xz zlib
CentOS
yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel wget
Ubuntu
sudo apt-get update
sudo apt-get install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
6、安装Pthon版本到**$(pyenv root)/versions
**,例如安装python3.7.6:pyenv install 3.7.6
pyenv安装时,下载过程缓慢或者无法连接下载服务器,可去 Python官网下载页 将需要的python版本源码tar包下载到$PYENV_ROOT/cache/ 目录下,然后再执行pyenv install。
常用命令
以下是生产环境常用的命令:
命令 | 描述 |
pyenv commands | 查看有效的pyenv命令。 |
pyenv local | 为当前目录设置指定的Python版本。 |
pyenv version | 查看当前活跃的Python版本,以及其设置信息。 |
pyenv versions | 查看以安装的Python版本,带 |
pyenv install | 安装一个Python版本。 |
创建虚拟环境
方式一:python自带工具(推荐)
使用python -m venv myvenv
可以创建该python版本的虚拟环境。
同时创建多个虚拟环境示例:
python -m venv myvenv1 myvenv2
激活虚拟环境:
source myvenv1/bin/activate
方式二:virtualenv
安装
sudo pip install virtualenv
使用
基础命令:virtualenv ENV
上述命令会在当前目录创建Python虚拟环境。
以创建虚拟环境 venv
为例
1、创建:virtualenv venv
2、激活环境:source /path/to/venv/bin/activate
3、退出环境:deactivate
其他
默认情况,Python虚拟环境的核心包是以软链的形式存在,与其参照的基础Python版本环境文件强相关。
如果想要创建完全独立的Python虚拟环境,还是自己编译一个Python版本吧。
使用pip安装python包的时候,使用国内镜像源会比较块。
生产环境使用
Hadoop,Spark等大数据平台环境。
Pyenv安装在/opt/.pyenv。如果放在某个用户的home目录下,其他用户使用依赖其创建的虚拟环境时,有问题。
虚拟环境安装在/opt/virtualenv。
1、使用Pyenv创建需要的Python版
2、在使用的Python版本下,使用python -m venv
创建需要的Python工程环境
3、将Pyenv安装的Python版本环境和创建的虚拟环境,都分发到所有的worker节点,并保持其绝对路径一致
4、在PySpark任务的spark-submit提交命令中指定需要的Python工程环境