python的依赖管理是中心化的,因此需要虚拟环境来解决不同项目所需的解释器版本和依赖版本不同的问题
摘要
本篇博客对Python常用的虚拟环境进行介绍,以便加深理解和记忆
venv
python3.3版本之后内置的模块
# 1.创建虚拟环境:创建路径/{虚拟环境名}文件夹,复制了当前默认解释器的拷贝
# bin:pip、python等可执行文件
# pyvenv.cfg:配置文件
# site-packages:lib目录下
python3 -m venv {路径/{虚拟环境名}}
# 2.激活虚拟环境
cd {路径/{虚拟环境名}}
source ./bin/activate
# 3.推出虚拟环境
deactivate
virtualenv
# 1.安装
pip install virtualenv
# 2.创建虚拟环境
cd {路径}
# --system-site-packages:使用父解释器包含的依赖
# --no-site-packages:已废弃,成默认项
# -p:指定父解释器版本,如:python3.9
virtualenv {虚拟环境名} [--system-site-packages|--no-site-packages] -p {版本}
# 3.激活退出虚拟环境
# windows
cd script
activate
deactivate
# linux
cd bin
source activate
deactivate
# 4.删除虚拟环境
rm -r {虚拟环境名}
结合pycharm使用:指定解释器为虚拟环境中的解释器即可
virtualwrapper
基于virtualenv的封装,将所有虚拟环境整合在一个目录下默认(~/.virtualenvs)。提供了很多api,切换环境很方便。
# 1.安装
pip3 install virtualenv # 确保virtualenv已安装
pip3 install virtualenvwrapper # Linux
pip3 install virtualenvwrapper-win # Windows
# 2.配置(或./zshrc)
vim ~/.bashrc
# 改环境变量WORKON_HOME来指定虚拟环境的保存目录(virtualenvwrapper默认将所有的虚拟环境放在~/.virtualenvs目录下管理)
export WORKON_HOME=$HOME/.virtualenvs
# 如果你安装的virtualenv不在系统默认的python解释器上,就需要单独指定virtualenvwrapper使用的python路径:VIRTUALENVWRAPPER_PYTHON
export VIRTUALENVWRAPPER_PYTHON=/usr/local/python3.6/bin/python3
source /etc/profile
# 3.激活virtualenvwrapper
source /usr/local/python3.6/bin/virtualenvwrapper.sh
# 4.创建虚拟环境
mkvirtualenv --python=/usr/local/python3.9/bin/python3 venv8
# 5.查看当前的虚拟环境目录
workon
lsvirtualenv
# 6.切换虚拟环境
workon venv8
# 7.退出虚拟环境
deactivate
# 8.删除虚拟环境
rmvirtualenv venv8
# 9.显示 site-packages 目录中的内容
lssitepackages
Pipenv
pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷
# 1.安装
pip3 install pipenv
# 2.创建虚拟环境
cd <your_project>
pipenv install
pipenv --two # 使用当前系统中的Python2 创建环境
pipenv --three # 使用当前系统中的Python3 创建环境
pipenv --python 3.7
# 3.激活虚拟环境
pipenv shell
# 4.退出虚拟环境
exit
# 5.删除虚拟环境
pipenv --rm
# 6.安装包(生成Pipfile.lock文件)
pipenv install package_name [--skip-lock]
pipenv install -r {path/to/requirements.txt}卸载包
# 7.运行项目
pipenv run python {xxx.py}
# 8.查看包与包之间依赖关系
pipenv graph
# 9.查看虚拟环境保存路径
pipenv --venv
# 10.查看python解释器路径
pipenv --py
# 11.卸载包
pipenv uninstall {package_name}
# 12.pipfile文件
# [[source]]可以指定pypi库的源,这里可以指定多个源,让不同的包从不同的源里面下载
# 如:指定requests包从home源下载,maya包从pypi源下载
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[[source]]
url = "http://pypi.home.kennethreitz.org/simple"
verify_ssl = false
name = "home"
[dev-packages]
[packages]
requests = {version="*", index="home"}
maya = {version="*", index="pypi"}
records = "*"
# [scripts] 添加自定义的脚本命令,并通过 pipenv run 的方式在虚拟环境中执行对应的命令
# 如:pipenv run dev 相当于 pipenv run python3 manage.py runserver 0.0.0.0:8000
[scripts]
test = "python3 -m unittest discover -s ./tests"
dev = "python3 manage.py runserver 0.0.0.0:8000"
conda & Anaconda
1.概述
- conda是一个支持多os的,支持多语言(Python、R、JS、C)的依赖和环境的管理工具,可以创建不同版本依赖和环境的虚拟环境为项目提供服务
- 其中conda版本下载之处就包含了许多常用的依赖库,miniconda版本则是精简版,在需要时进行手动安装。
- conda从功能角度上可以看作pip和virtualenv的统一
2.安装
3.使用
1)版本管理
# 检查安装与版本
conda -V
# 检查更新当前conda
conda update conda
2)环境相关
# 检查安装与版本
conda -V
# 检查更新当前conda
conda update conda
# 查看虚拟环境
conda env list
conda info -e # conda info 查看配置信息
# 创建虚拟环境
conda create -n [env_name]
conda create -n [env_name] python=3.8 # 指定py版本
conda create -n [env_name] python=3.8 dumpy #指定py版本和要安装的包
# 克隆环境
conda create --name new_env_name --clone base_env_name
# 删除环境
conda remove -n [env_name] --all
# 进入环境
conda activate [env_name]
# 退出环境
exit
# 激活或者切换虚拟环境
Linux: source activate [env_name]
conda activate [env_name]
Windows: activate [env_name]
# 关闭虚拟环境(即从当前环境退出返回使用PATH环境中的默认python版本)
source deactivate
conda deactivate
# 导出环境的包列表
conda env export --file [文件名字.yml] --name [env_name]
conda env export --file coder-base.yml --name coder-base
# 基于导出的yml文件创建新环境
conda env create -f [文件名字.yml] conda env create -f coder-base.yml
3)依赖管理
# 查看虚拟环境中安装了哪些包 (默认为base环境)
conda list
# 安装包
conda install [package_name]
# 搜索待安装包信息
conda search [package_name]
# 更新包
conda update [package_name]
# 删除包
conda remove [package_name]
# 删除环境中的某个包
conda remove --name $env_name $package_name
# 直接清除被缓存包
conda clean -t
# 直接清除索引缓存、未使用缓存包
conda clean -y -a
4)通道管理(镜像)
# 设置清华大学镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
# 恢复默认镜像
conda config --remove-key channels
# 查看已安装通道
conda config --show channels
# 更改通道
conda update [package_name]
# 删除某个通道
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/