1-基本概念
虚拟环境是独立于 Python 全局环境的 Python 解释器环境,使用它的好处如下:
- 保持全局环境的干净
- 指定不同的依赖版本
- 方便记录和管理依赖
如果同时开发多个Python程序,但应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办呢?
这时就需要让它们各自拥有一套“独立“的Python运行环境。
2-venv与virtualenv
1)安装虚拟环境创建模块
Python 3可使用 内置的 venv 模块创建虚拟环境。
或者pip3 install virtualenv
-
Python 2则需要安装 virtualenv 作为替代:
pip install virtualenv 或 sudo pip install virtualenv
2)创建新的虚拟环境
- venv:
python -m venv c:\path\to\env
- virtualenv:
virtualenv env
上述命令的最后一个参数是虚拟环境名称,可以自由定义。
如果不想使用系统的包,加上–no-site-packeages参数
上述创建命令会在当前目录创建一个包含 Python 解释器环境的虚拟环境文件夹,名称为env。
3) 执行/退出虚拟环境
创建虚拟环境后,我们可以使用下面的命令来激活虚拟环境,如下所示(执行
deactivate 可以退出虚拟环境):
$ env\Scripts\activate # Windows
$ . env/bin/activate # Linux 或 macOS
这时命令提示符前会显示虚拟环境的名称,表示已经激活成功:
(env) $
4)开发新项目时如何操作
- 第一步:为项目创建目录
mkdir 文件夹名称
- 第二步:创建一个独立的Python运行环境,命名为venv
python -m venv venv
- 第三步:激活使用
env\Scripts\activate
退出使用deactivate
- 如需删除使用的虚拟环境可直接删除该venv文件夹
5) venv的详细使用参数
usage: venv [-h] [--system-site-packages] [--symlinks] [--clear]
[--upgrade] [--without-pip] ENV_DIR [ENV_DIR ...]
Creates virtual Python environments in one or more target directories.
positional arguments:
ENV_DIR A directory to create the environment in.
optional arguments:
-h, --help show this help message and exit
--system-site-packages Give access to the global site-packages dir to the
virtual environment.
--symlinks Try to use symlinks rather than copies, when symlinks
are not the default for the platform.
--copies Try to use copies rather than symlinks, even when
symlinks are the default for the platform.
--clear Delete the environment directory if it already exists.
If not specified and the directory exists, an error is
raised.
--upgrade Upgrade the environment directory to use this version
of Python, assuming Python has been upgraded in-place.
--without-pip Skips installing or upgrading pip in the virtual environment (pip is bootstrapped by default)
使用时python -m venv [-参数]
6)其它有用指令
pip freeze #查看当前安装库版本
#创建 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表
#保持部署相同,一键安装所有包
pip install -r requirements.txt
pip freeze > requirements.txt
lsvirtualenv #列举所有的环境
cdvirtualenv #导航到当前激活的虚拟环境的目录中,相当于pushd 目录
cdsitepackages # 和上面的类似,直接进入到 site-packages 目录
lssitepackages #显示 site-packages 目录中的内容
3-pyenv
在Python世界里,除了需要对Python的版本进行管理以外,还需要对不同的软件包进行管理。管理不同Python版本可使用pyenv。
1)pyenv是什么
pyenv是一个Python版本管理 工具,它能够进行全局的Python版本切换,也可以为单个项目提供对应的Python版本。使用pyenv以后,可以在服务器上安装多个不同的Python版本,也可以安装不同的Python实现。不同Python版本之间的切换也非常简单。
比如,, 在terminal中输入一个命令比如‘ls’时, shell会从当前环境的PATH中的各个目录里看是不是有ls这个可执行文件, 如果找到就执行, 否则就会报‘command no found’ 的错误, 同理, 只要控制PATH变量就能够做到python版本的切换, pyenv通过在PATH头部插入shims路径来实现对python版本的控制.
特点
- pyenv侧重于python 解释器版本管理, 比包管理更大一个层级, 使用pyenv可以方便的下载指定版本的python解释器, pypy, anaconda等, 可以随时自由的在shell环境中本地、全局切换python解释器
- 开发的时候不需要限定某个版本的虚拟环境, 只需要在部署的时候用pyenv指定某个版本就好了
- pyenv切换解释器版本的时候, pip和ipython以及对应的包环境都是一起切换的, 所以如果你要同时运行ipython2.x和ipython3.x多个解释器验证一些代码时就很方便
- pyenv也可以创建好指定的虚拟环境, 但不需要指定具体目录, 自由度更高, 使用也简单
2)简单使用
# 查看当前版本
pyenv version
# 查看所有版本
pyenv versions
# 查看所有可安装的版本
pyenv install --list
# 安装指定版本
pyenv install 3.6.5
# 安装新版本后rehash一下
pyenv rehash
# 删除指定版本
pyenv uninstall 3.5.2
# 指定全局版本
pyenv global 3.6.5
# 指定多个全局版本, 3版本优先
pyenv global 3.6.5 2.7.14
# 实际上当你切换版本后, 相应的pip和包仓库都是会自动切换过去的
3)pyenv-win
pyenv自身不支持windows系统,但有大神在他其础上开发了相关工具pyenv-win,可满足基础功能使用。
安装
安装命令
pip install pyenv-win --target %USERPROFILE%/.pyenv
%USERPROFILE%换成你要存放pyenv的路径。
配置环境变量:
- 在系统变量中添加变量
PYENV
值为%USERPROFILE%\.pyenv\pyenv-win
记得更改路径 - 在变量PATH中添加pyenv命令(中间用分号隔开):
%PYENV%\bin
和%PYENV%\shims
- 2019年5月更新的windows用户要将
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
放在上面
验证安装是否成功
打开新的终端输入pyenv --version
在home路径运行pyenv rehash
使用
安装一个版本的python:
pyenv install 3.6.8
-
如果操作超时可更换其默认的下载镜像源,比如淘宝镜像源:
https://npm.taobao.org/mirrors/python/
,替换掉 \pyenv-win\libexec\pyenv-install.vbs中的网址If mirror = mirrorEnvPath then mirror = "https://www.python.org/ftp/python"
再次尝试下载,查看网速是否正常
其他使用见pyenv
4-更换虚拟环境的Python版本
这里要用到pyenv和venv,且默认已经创建了一个虚拟环境
- 1)在虚拟环境中使用
pip freeze > requirements.txt
,将所有依赖包及其版本号保存为需求文件 - 2)
deactivate
退出虚拟环境,使用rm -rf (虚拟环境文件名)
删除之前的虚拟环境 - 3)使用pyenv设定当前文件夹的Python版本,
pyenv local (设定版本号)
- 4)使用venv重新创建虚拟环境,
python -m venv (虚拟环境文件名)
- 激活虚拟环境
虚拟环境文件名\scripts\activate
,将需求文件导入pip install -r requirements.txt
- 激活虚拟环境
- 6)查看是否导入成功
pip list