加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

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

发布时间:2019-07-04 11:43:47 所属栏目:建站 来源:读芯术
导读:凭借之门:放弃进入这里的全部但愿。 插图:Gustave Dor Python的假造情形极大处所便了人们的糊口。本指南先先容假造情形的基本常识以及行使要领,然后再深入先容假造情形背后的事变道理。 留意:本指南在macOS Mojave体系上行使最新版本的Python 3.7.x。

大功告成,多亏了requirements.txt文件,又规复了正常。然而另一个缘故起因是始终要在项目中列入需求文件。

代码详解:Python假造情形的道理及行使

但丁与冰中的叛徒对话——但丁《神曲·地狱篇》第32章

插图:Gustave Doré

5. 假造情形怎样做到这一点?

想相识更多有关假造情形的信息吗?好比,勾当情形怎样行使正确的Python表明措施并怎样找到吻合的第三方库?

(1) echo $ PATH

这统统都归结为PATH的代价,它汇报shell行使什么Python实例以及在那边探求网站包。在基本shell中,PATH看起来或多或少是这样示意的。

  1. % echo $PATH 
  2. /usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin 

挪用Python表明器或运行.py剧本时,shell会按次序搜刮PATH中列出的目次,直到碰着Python实例。要查察PATH起首找到的Python实例,请运行which python3。

  1. % which python3 
  2. /usr/local/bin/python3                 # Your output may differ 

通过站点模块(这是Python尺度库的一部门)查找此Python实例查找站点包的位置也很轻易。

  1. % python3                           # Activates a Python shell 
  2. >>> import site                       
  3. >>> site.getsitepackages()          # Points to site-packages folder['/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages'] 

运行剧本venv / bin / activate修改PATH,以便shell在搜刮体系的全局二进制文件之前搜刮项目标当地二进制文件。

  1. % cd ~/test-project/ 
  2. % source venv/bin/activate 
  3. (ven) % echo $PATH~/test-project/venv/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin 

此刻shell知道怎样行使项目标当地Python实例:

  1. (venv) % which python3 
  2. ~/test-project/venv/bin/python3 

在那边可以找到项目标当地站点包?

  1. (venv) % python3 
  2. >>> import site 
  3. >>> site.getsitepackages()['~/test-project/venv/lib/python3.7/site-packages']    # Ka-ching 

(2) 理智搜查

还记得早年的tests / imports-test.py剧本吗?看起来是下面这样:

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

我们可以或许在勾当情形中运行此剧本,不呈现任何题目,是由于情形中的Python实例可以或许会见项目标当地站点包。

假如运行从项目标假造情形外部而来的沟通剧本会产生什么?

  1. % tests/imports-test.py                # Look, no active environmentTraceback (most recent call last): 
  2.   File "tests/imports-test.py", line 3, in <module> 
  3.     import numpy as npModuleNotFoundError: No module named 'numpy' 

是的,呈现了一个错误,但我们应该这样做。假如我们不这样做,那就意味着我们可以或许从项目外部会见项目标当地站点包,从而粉碎了拥有假造情形的整个目标。呈现错误的究竟证明我们的项目与体系的其他部门完全断绝。

(3) 情形的目次树

有一件事可以辅佐清算全部这些信息,即清晰地相识情形目次树的外面。

  1. test-project/venv/               # Our environment's root directory 
  2. ├── bin 
  3. │   ├── activate                           # Scripts to activate 
  4. │   ├── activate.csh                       # our project's 
  5. │   ├── activate.fish                      # virtual environment. 
  6. │   ├── easy_install 
  7. │   ├── easy_install-3.7 
  8. │   ├── pip 
  9. │   ├── pip3 
  10. │   ├── pip3.7 
  11. │   ├── python -> /usr/local/bin/python    # Symlinks to system-wide 
  12. │   └── python3 -> python3.7               # Python instances. 
  13. ├── include 
  14. ├── lib 
  15. │   └── python3.7 
  16. │       └── site-packages              # Stores local site packages 
  17. └── pyvenv.cfg 

代码详解:Python假造情形的道理及行使

但丁和维吉尔回到了人间间——但丁《神曲·地狱篇》第34章

插图:Gustave Doré

(编辑:湖南网)

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

热点阅读