加入收藏 | 设为首页 | 会员中心 | 我要投稿 牡丹江站长网 (https://www.0453zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

代码详解:Python虚拟环境的原理及使用

发布时间:2019-07-03 04:02:59 所属栏目:优化 来源:读芯术
导读:依附之门:放弃进入这里的所有希望。 插图:Gustave Dor Python的虚拟环境极大地方便了人们的生活。本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。 注意:本指南在macOS Mojave系统上使用最新版本的Python 3.7.x。

如果想要安装第三方库的特定版本,比如numpyv1.15.3,可像往常一样使用pip。

  1. (venv) % pip install numpy==1.15.3 
  2. (venv) % pip listPackage    Version 
  3. ---------- ------- 
  4. numpy      1.15.3 
  5. pip        19.1.1 
  6. setuptools 40.8.0 

现在可在脚本或活动的Python shell中导入numpy。例如,假设项目包含以下几行脚本tests / imports-test.py。

  1. #!/usr/bin/env python3 
  2. import numpy as np 

直接从命令行运行这个脚本时,可得到:

  1. (venv) % tests/imports-test.py            
  2. (venv) %                                 # Look, Ma, no errors! 

成功。脚本导入numpy没有故障。

代码详解:Python虚拟环境的原理及使用

但丁和Virgil穿过Styx河—但丁《神曲·地狱篇》第八章

插图:Gustave Doré

4. 管理环境

(1) 需求文件

使我们的工作成果可被他人重新使用的最简单方法是在项目的根目录(顶层目录)中加入一个需求文件。为此,需要运行pip freeze,以下列出已安装的第三方软件包及其版本号:

  1. (venv) % pip freeze 
  2. numpy==1.15.3 

并将输出写入文件,我们称之为requirements.txt。

  1. (venv) % pip freeze > requirements.txt 

更新软件包或安装新软件包时,都可使用相同的命令重写需求文件。

现在,任何共享项目的人都可以使用requirements.txt文件,通过复制环境以在系统上运行项目。

(2) 复制环境

等等——究竟是怎么做到的?

想象一下,我们的队友Sara从团队的GitHub存储库中删除了测试项目。在她的系统上,项目的目录树如下所示:

  1. test-project/ 
  2. ├── data         
  3. ├── deliver      
  4. ├── develop      
  5. ├── requirements.txt 
  6. ├── src    
  7. └── tests 

注意到有点不寻常的东西了吗?是的,没错!没有venv /文件夹。

我们已经将它从团队的GitHub存储库中删除,因为它的存在可能会引起麻烦。

这就是使用requirements.txt文件对复制项目代码至关重要的一个原因。

要在机器上运行测试项目,Sara需要做的就是在项目的根目录中创建一个虚拟环境:

  1. Sara% cd test-project/ 
  2. Sara% python3 -m venv venv/ 

并使用pip install -r requirements.txt将项目的依赖项安装在活动的虚拟环境中。

  1. Sara% source venv/bin/activate 
  2. (venv) Sara% pip install -r requirements.txt 
  3. Collecting numpy==1.15.3 (from -r i (line 1)) 
  4. Installing collected packages: numpy 
  5. Successfully installed numpy-1.15.3 

现在,Sara系统上的项目环境与我们的系统完全相同。很整洁,不是吗?

(3) 故障排除

可惜事情并不总是按计划进行,总会遇到一些问题。也许错误地更新了特定的站点包后发现自己处于Dependency Hell的第九级,无法运行单行项目代码。也许它没那么糟糕,可能你会发现自己竟处于第七级。

无论你发现自己处于何种程度,解决问题并再次看到希望的最简单方法是重新创建项目的虚拟环境。

  1. % rm -r venv/                           # Nukes the old environment 
  2. % python3 -m venv venv/                 # Makes a blank new one 
  3. % pip install -r requirements.txt       # Re-installs  

(编辑:牡丹江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!