优点
- 使不同应用开发环境独立
- 环境升级不影响其他应用,也不会影响全局的python环境
- 可以防止系统中出现包管理混乱和版本的冲突
常用的市场上管理 Python 版本和环境的工具
- pyenv:简单的 Python 版本管理工具。
- virtualenv:创建独立 Python 环境的工具。
- virtualenvwrapper:virtualenv 的一组扩展。
virtualenv
由于 virtualenvwrapper 是 virtualenv 的一组扩展,所以如果要使用 virtualenvwrapper,就必须先安装 virtualenv。
- 安装
pip3 install virtualenv
# 检查版本
virtualenv --version
由于virtualenv创建虚拟环境是在当前环境下创建的。所以我们要准备一个专门存放虚拟环境的目录
- 创建
# 准备目录并进行
$ mkdir -p /home/wangbm/Envs
$ cd !$
# 创建虚拟环境(按默认的Python版本)
# 执行完,当前目录下会有一个my_env01的目录
$ virtualenv my_env01
# 你也可以指定版本
$ virtualenv -p /usr/bin/python2.7 my_env01
$ virtualenv -p /usr/bin/python3.6 my_env02
# 你肯定觉得每次都要指定版本,相当麻烦吧?
# 在Linux下,你可以把这个选项写进入环境变量中
$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7" >> ~/.bashrc
创建完全隔离的Python环境,实质是创建了一个文件夹,我们的操作都是在这个目录里面进行的。
默认情况下,virtualenv会引用系统python环境中 site-packages 中的库,并将其复制到虚拟python环境的库中。我们可以设置--no-site-packages 参数取消对系统Python库的引用,以此来创建一个完全纯净的python环境。
virtualenv --no-site-packages myenv
- 进入/退出
cd /home/wangbm/Envs
# 激活虚拟环境
$ source my_env01/bin/activate
# 退出虚拟环境
$ deactivate
- 删除
删除虚拟环境,只需删除对应的文件夹就行了。并不会影响全局的Python和其他环境。
cd /home/wangbm/Envs
$ rm -rf my_env01
注意:
创建的虚拟环境,不会包含原生全局环境的第三方包,其会保证新建虚拟环境的干净。
如果你需要和全局环境使用相同的第三方包。可以使用如下方法:
# 导出依赖包
$ pip freeze > requirements.txt
# 安装依赖包
$ pip install -r requirements.txt
virtualenvwrapper
virtualenv 虽然已经相当好用了,可是功能还是不够完善。
你会发现了,要进入虚拟环境,必须得牢记之前设置的虚拟环境目录,如果你每次按规矩来,都将环境安装在固定目录下也没啥事。但是很多情况下,人是会懒惰的,到时可能会有很多个虚拟环境散落在系统各处,你将有可能忘记它们的名字或者位置。
还有一点,virtualenv 切换环境需要两步,退出 -> 进入。不够简便。
为了解决这两个问题,virtualenvwrapper就诞生了。
- virtualenv 虽然已经相当好用了,可是功能还是不够完善。
你可能也发现了,要进入虚拟环境,必须得牢记之前设置的虚拟环境目录,如果你每次按规矩来,都将环境安装在固定目录下也没啥事。但是很多情况下,人是会懒惰的,到时可能会有很多个虚拟环境散落在系统各处,你将有可能忘记它们的名字或者位置。
还有一点,virtualenv 切换环境需要两步,退出 -> 进入。不够简便。
为了解决这两个问题,virtualenvwrapper就诞生了。
- 安装
# 安装 - Linux环境
pip install virtualenvwrapper
# 安装 - Windows环境
pip install virtualenvwrapper-win
- 配置
先find一下virtualenvwrapper.sh文件的位置
find / -name virtualenvwrapper.sh
# /usr/bin/virtualenvwrapper.sh
在~/.bashrc 文件新增
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
export VIRTUALENVWRAPPER_SCRIPT=/usr/bin/virtualenvwrapper.sh
source /usr/bin/virtualenvwrapper.sh
基本语法:
mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] ENVNAME
- 常用方法
# 创建
$ mkvirtualenv my_env01
# 进入
$ workon my_env01
# 退出
$ deactivate
# 列出所有的虚拟环境,两种方法
$ workon
$ lsvirtualenv
# 在虚拟环境内直接切换到其他环境
$ workon my_env02
# 删除虚拟环境
$ rmvirtualenv my_env01
- 其他命令
# 列出帮助文档
$ virtualenvwrapper
# 拷贝虚拟环境
$ cpvirtualenv ENVNAME [TARGETENVNAME]
# 在所有的虚拟环境上执行命令
$ allvirtualenv pip install -U pip
# 删除当前环境的所有第三方包
$ wipeenv
# 进入到当前虚拟环境的目录
$ cdsitepackages
# 进入到当前虚拟环境的site-packages目录
$ cdvirtualenv
# 显示 site-packages 目录中的内容
$ lssitepackages
pyenv
可通过下方网址安装pyenv:
curl https://pyenv.run | bash
安装后,向.bashrc(或.zshrc)文件中添加下方代码,使得pyenv可用于设备。
exportPATH="~/.pyenv/bin:$PATH"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"
最后,重启设备。
现在可以使用pyenv安装几乎所有的python解释器,包括pypy、anaconda。
需要注意的是,pyenv只在电脑上搭建本地python环境。搭建python环境需要多种函数库。
在Ubuntu系统的电脑上,必须安装以下函数库以防止运行出现问题。
sudo
apt-get installbuild-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev
zlib1g-dev libssl-dev openssllibgdbm-dev libgdbm-compat-dev liblzma-dev libreadline-dev libncursesw5-devlibffi-dev uuid-dev
安装python解释器:
pyenv installVERSION_YOU_WOULD_LIKE_TO_INSTALL
列出所有可用版本
pyenv install --list
为了使上述过程更加具体,在此安装python3.7.5并且设置其为默认的全局解释器。
pyenv install 3.7.5pyenv global 3.7.5
输入Python-version指令,屏幕将显示Python3.7.5
- 依赖关系管理
使用pip和pyenv-virtualenv指令
为什么不只用pip?
因为只用pip可能会在全局环境中安装poetry及其依赖项,这可能是你不需要也不想要的。
必要指令如下:
# Create a virtual environmentcalled tools that is based on 3.7.5
pyenv virtualenv 3.7.5 tools
# Install poetry into the tools virtual env
pyenv activate tools
pip install poetry
# Check installed poetry version
poetry --version
# Leave the virtual env
pyenv deactivate
# This does not work yet
poetry --version
# Add your tools virtual env to the globally available ones
pyenv global 3.7.5 tools
# Now this works and you can start using poetry
poetry --version
在使用poetry创建第一个项目之前,建议先对其进行配置,这样就可以在项目目录中的.venv文件夹中创建虚拟环境。
当你使用VsCode或Pycharm这类集成开发环境时就会变得非常方便,因为它们可以立即识别并选择正确的解释器。
poetry configsettings.virtualenvs.in-project true
注意:你只需设置一次配置,设置结果将在全局环境保留。
网友评论