Python开发中通常使用相对独立于系统环境的虚拟环境,本文描述虚拟环境的安装、创建、管理方法。
虚拟环境,即相对于系统级环境独立的一个环境,在开发过程中可以减少不必要的第三方库依赖,并且可以做到多个开发环境之间的独立。
conda 见 conda。
Python 3自带的虚拟环境工具,其中pyvenv是Python 3.3、Python 3.4推荐的管理方式,在Python 3.6已弃用,改为venv,详情见 这里。
优点:
缺点:
使用如下指令创建虚拟环境:
python -m venv <venv name>
其中venv name
是虚拟环境的名字,可以使用路径。例如python -m venv ./venv
,将在当前目录创建一个venv
文件夹,其内即为虚拟环境所需的文件。
可以使用:
python -m venv -h
查看所有参数。
使用source <path-to-venv>/bin/activate
来激活虚拟环境,例如,对于上述创建的虚拟环境,可以使用source ./venv/bin/activate
来激活。
删除上述创建的文件夹即可。例如rm -rf ./venv
。
第三方库,链接在这。
优点:
缺点:
使用如下命令安装
pip3 install virtualenv
使用如下命令创建:
virtualenv <dest>
例如virtualenv ./venv
将在当前目录创建venv
虚拟环境。
更多例子:
virtualenv -p /usr/bin/python3.9 ./venv39 # 将在当前目录创建基于Python 3.9的虚拟环境,需要系统安装pyton3.9
激活方法与上述venv/pyvenv
相同。
与上述venv.pyvenv
相同。
是上述virtualenv的二次封装,添加了统一的环境管理,链接在这。具体使用教程见官方文档。
优点:
缺点:
使用如下命令安装
pip install virtualenvwrapper
使用mkvirtualenv
来创建环境,环境将统一放在WORKON_HOME
里。
例如:
mkvirtualenv myvenv
更多参数见官方文档或使用mkvirtualenv -h
查看。
使用workon myvenv
来激活虚拟环境。
使用rmvirtualenv
来删除环境,例如rmvirtualenv myvenv
。
优点:
缺点:
使用如下命令安装:
pip install --user pipenv
pipenv会使用项目下的Pipfile
和Pipfile.lock
来管理项目的包。
例如安装numpy可以使用如下命令:
pipenv install numpy
安装多个库可以使用如下命令:
pipenv install numpy pandas scipy
poetry集成了环境管理与依赖安装,官网。
优点:
使用如下命令安装:
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
使用如下命令启用补全:
# Bash
poetry completions bash > /etc/bash_completion.d/poetry.bash-completion
# Fish
poetry completions fish > ~/.config/fish/completions/poetry.fish
# Zsh
poetry completions zsh > ~/.zfunc/_poetry
# Oh-My-Zsh
mkdir $ZSH_CUSTOM/plugins/poetry
poetry completions zsh > $ZSH_CUSTOM/plugins/poetry/_poetry
对于zsh,需要添加如下内容到~/.zshrc
的 compinit
部分之前。
fpath+=~/.zfunc
对于Oh-My-Zsh,添加如下内容到~/.zshrc
。
plugins(
poetry
...
)
使用如下命令更新:
poetry self update
如果是新建项目,使用如下命令:
poetry new poetry-demo
如果是针对已经存在的项目,使用如下命令:
cd pre-existing-project
poetry init
poetry
将会使用项目下的pyproject.toml
管理项目环境与依赖。
使用如下命令激活环境:
poetry shell
pyproject.toml
来添加依赖,然后使用poetry install
来安装。poetry add package
来添加依赖,将同步更改pyproject.toml
文件。例如:poetry add numpy pandas
使用如下命令删除环境:
poetry remove poetry-demo
pip
安装。下载需要的whl
文件,使用pip install <whl>
安装。$ZSH_CUSTOM
这个变量,导致mkdir $ZSH_CUSTOM/plugins/poetry
失败,可以查找一下你的zsh插件目录,在我的情况下其目录为/usr/share/oh-my-zsh/custom
。目前来说体验最好的是poetry,但各个工具有自己的优点和缺点,因此可以根据上述描述具体选择。