在Windows的Python开发中经常使用anaconda来配置虚拟环境,但是在Linux中使用conda经常会出现环境变量报错等一系列问题,因此本文将总结以下在Linux中使用vitualenv来配置虚拟环境。

venv

venv是python在版本3.3后自带的功能

1
2
3
cd /path/to/proj
python3 -m venv proj_name #创建虚拟环境
source ./bin/activate #激活虚拟环境

激活虚拟环境后,命令行最前面会像conda一样显示环境名,在虚拟环境中,pip安装的包与其他环境是隔离的,可以安装随意的版本而不影响其它环境

1
deactivate #退出环境

venv只能创建虚拟环境,不能指定python版本比较麻烦,并且不能查看环境列表。

virtualenv

virtualenv是venv的加强版,可以指定python版本

1
2
sudo apt install virtualenv
pip3 install virtualenv

使用virtualenv

1
2
3
4
cd /path/to/proj	
virtualenv env_name -p python3.8 #指定python版本创建环境
source ./bin/activate #激活环境
deactivate #退出环境

但是virtualenv也不能查看当前系统安装的环境列表。

virtualenvwrapper

virtualenvwrapper相当于是virtualenv的管理工具,可以查看环境列表

安装virtualenvwrapper

1
2
pip3 install virtualenvwrapper
mkdir $HOME/.virtualenvs

配置virtualenvwrapper

1
2
3
4
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
source ~/.local/bin/virtualenvwrapper.sh

重启终端或者执行以下命令

1
source ~/.bashrc

virtualenvwrapper相关命令

1
2
3
4
5
6
mkvirtualenv env_name -p python3.8	#创建指定python版本虚拟环境
workon env_name #切换虚拟环境
deactivate #退出虚拟环境
rmvitualenv env_name #删除虚拟环境
lsvirtualenv #列出虚拟环境
lssitepackages #列出当前环境安装的包

Pipenv

pipenv和vituralenvwrapper类似

1
pip3 install pipenv

使用方法

1
2
3
4
5
6
7
8
pipenv --python 3.x.x 	#指定python版本创建虚拟环境
pipenv --version
pipenv --venv #查看当前虚拟环境信息
pipenv graph #查看虚拟环境中包的依赖关系
pipenv run 命令 #在虚拟环境中运行命令
pipenv shell #切换到虚拟环境shell
pipenv install #在虚拟环境中安装包
exit #退出虚拟环境

删除虚拟环境

1
pipenv --rm

Python版本

在ubuntu中,apt安装的python版本可能不符合要求,因此需要安装其他版本的python,这里有几种方法

源码编译

下载python源码进行编译,适合比较古老或软件适配不好的系统

添加PPA源

1
2
3
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.x

安装完成后,要运行python3.x,使用python3.x命令

但是这种方法适合较新的系统,ppa:deadsnakes 仓库停止维护旧版本 Ubuntu ,删除了针对 Ubuntu bionic 18.04 的所有 Python 预编译包,目前仅支持focal和jammy。

Pyenv

pyenv是一个python版本管理工具,可以很方便地切换python版本,pyenv的原理也是从下载python源码进行编译。