第五节 虚拟环境virtualenv
使用虚拟环境,可以避免包的混乱和版本的冲突,虚拟环境是Python解释器的副本,在虚拟环境中你可以安装扩展包,为每个程序单独创建的虚拟环境,可以保证程序只能访问虚拟环境中的包。而不会影响系统中安装的全局Python解释器,从而保证全局解释器的整洁。
主要是打包项目的时候比较方便,不然所有的安装过的包都混杂在一起。
一、安装虚拟环境
pip install virtualenv
pip install virtualenvwrapper
pip install virtualenvwrapper-win (不安装这个包,会碰见找不到 mkvirtualenv 命令)
查看系统是否安装了virtualenv:
virtualenv --version
Linux下Python3命令用:pip3 Ubuntu查看virtualenvwrapper安装路径:
pip3 show virtualenvwrapper
比如结果是:/home/ubuntu/.local/lib/python3.6/site-packages
二、创建虚拟环境
安装完成后需要配置环境变量。
1.创建一个目录用来存放虚拟环境
例如:G:\SynologyDrive\Python\Envs
2.创建系统环境变量(Windows)
变量名:WORKON_HOME
变量值:G:\SynologyDrive\Python\Envs
3.修改mkvirtualenv.bat 文件(Windows)
文件中默认的虚拟环境目录是在C:\Users\username
下。
在 Python安装目录下的Scripts\mkvirtualenv.bat
,把第24行
set "venvwrapper.default_workon_home=%USERPROFILE%\Envs"
修改为:
set "venvwrapper.default_workon_home=%WORKON_HOME%"
4.ubuntu配置环境变量
1).创建目录用来存放虚拟环境
mkdir ~/.virtualenvs
2).打开~/ .bashrc文件,并添加如下:
vi ~/ .bashrc
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
source ~/.local/bin/virtualenvwrapper.sh
3).运行
source ~/.bashrc
5.创建虚拟环境(须在联网状态下)
保存后重新打开cmd窗口,创建虚拟环境。 比如创建一个名为flask_py的虚拟环境命令为:
mkvirtualenv flask_py
创建完成后,flask_py/lib/python*.*/site-packages
目录就是对应的虚拟环境中的包目录。
三、使用虚拟环境
1.普通cmd环境
1).进入虚拟环境
workon flask_py
2).退出虚拟环境
deactivate flask_py
Windows PowerShell环境
如果想用 Windows PowerShell而不是cmd的,激活虚拟环境的命令是activate而不是workon。
# 进入目录
cd G:\SynologyDrive\Python\Envs\flask_py
# 激活虚拟环境
.\Scripts\activate
2.VS Code中使用
1).在 VS Code 选择 “查看 > 命令面板” 或按下 “Ctrl+Shift+P” 来打开命令面板:
2).再选择 Python: Select Interpreter 来选择运行解释器:
选择创建的虚拟环境目录下的,即:G:\SynologyDrive\Python\Envs\flask_py\Scriptes\python.exe
当我们选择虚拟环境后,VS Code会自动安排好一切,包括终端里面的环境。
如果运行的时候有报错:无法加载文件 ***\Activate.ps1
,因为在此系统上禁止运行脚本。
因为运行了activate.bat后会在同级目录下生成activate.ps1,PowerShell 默认不允许执行*.ps1脚本文件。
解决方法:
使用管理员打开powershell,运行以下命令:
Set-ExecutionPolicy RemoteSigned
选择“Y是”后回车就可以了。
Policy的有效参数: -- Restricted: 不载入任何配置文件,不运行任何脚本。 "Restricted" 是默认的。 -- AllSigned: 只有被Trusted publisher签名的脚本或者配置文件才能使用,包括你自己再本地写的脚本。 -- RemoteSigned: 对于从Internet上下载的脚本或者配置文件,只有被Trusted,publisher签名的才能使用。 -- Unrestricted: 可以载入所有配置文件,可以运行所有脚本文件. 如果你运行一个从internet下载并且没有签名的脚本,在运行之前,你会被提示需要一定的权限。 -- Bypass: 所有东西都可以使用,并且没有提示和警告。 -- Undefined: 删除当前scope被赋予的ExecutionPolicy,但是Group Policy scope的Execution Policy不会被删除。
四、requirements文件
Python项目中必须包含一个requirements.txt 文件,用来记录所有依赖包及其精确的版本号,以便在新环境中进行部署操作。
1.生成requirements文件
在虚拟环境使用以下命令将当前虚拟环境中的依赖包以版本号生成至文件中:
pip freeze > requirements.txt
2.使用requirements文件
当需要创建这个虚拟环境的完全副本,可以创建一个新的虚拟环境,并在其上运行以下命令:
pip install -r requirements.txt