| 
                         大功告成,多亏了requirements.txt文件,又恢复了正常。然而另一个原因是始终要在项目中列入需求文件。 
  
但丁与冰中的叛徒对话——但丁《神曲·地狱篇》第32章 
插图:Gustave Doré 
5. 虚拟环境如何做到这一点? 
想了解更多有关虚拟环境的信息吗?比如,活动环境如何使用正确的Python解释程序并如何找到合适的第三方库? 
(1) echo $ PATH 
这一切都归结为PATH的价值,它告诉shell使用什么Python实例以及在哪里寻找网站包。在基础shell中,PATH看起来或多或少是这样表现的。 
- % echo $PATH 
 - /usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin 
 
  
调用Python解释器或运行.py脚本时,shell会按顺序搜索PATH中列出的目录,直到遇到Python实例。要查看PATH首先找到的Python实例,请运行which  python3。 
- % which python3 
 - /usr/local/bin/python3                 # Your output may differ 
 
  
通过站点模块(这是Python标准库的一部分)查找此Python实例查找站点包的位置也很容易。 
- % python3                           # Activates a Python shell 
 - >>> import site                       
 - >>> 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在搜索系统的全局二进制文件之前搜索项目的本地二进制文件。 
- % cd ~/test-project/ 
 - % source venv/bin/activate 
 - (ven) % echo $PATH~/test-project/venv/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin 
 
  
现在shell知道如何使用项目的本地Python实例: 
- (venv) % which python3 
 - ~/test-project/venv/bin/python3 
 
  
在哪里可以找到项目的本地站点包? 
- (venv) % python3 
 - >>> import site 
 - >>> site.getsitepackages()['~/test-project/venv/lib/python3.7/site-packages']    # Ka-ching 
 
  
(2) 理智检查 
还记得以前的tests / imports-test.py脚本吗?看起来是下面这样: 
- #!/usr/bin/env python3 
 - import numpy as np  
 
  
我们能够在活动环境中运行此脚本,不出现任何问题,是因为环境中的Python实例能够访问项目的本地站点包。 
如果运行从项目的虚拟环境外部而来的相同脚本会发生什么? 
- % tests/imports-test.py                # Look, no active environmentTraceback (most recent call last): 
 -   File "tests/imports-test.py", line 3, in <module> 
 -     import numpy as npModuleNotFoundError: No module named 'numpy' 
 
  
是的,出现了一个错误,但我们应该这样做。如果我们不这样做,那就意味着我们能够从项目外部访问项目的本地站点包,从而破坏了拥有虚拟环境的整个目的。出现错误的事实证明我们的项目与系统的其他部分完全隔离。 
(3) 环境的目录树 
有一件事可以帮助整理所有这些信息,即清楚地了解环境目录树的外观。 
- test-project/venv/               # Our environment's root directory 
 - ├── bin 
 - │   ├── activate                           # Scripts to activate 
 - │   ├── activate.csh                       # our project's 
 - │   ├── activate.fish                      # virtual environment. 
 - │   ├── easy_install 
 - │   ├── easy_install-3.7 
 - │   ├── pip 
 - │   ├── pip3 
 - │   ├── pip3.7 
 - │   ├── python -> /usr/local/bin/python    # Symlinks to system-wide 
 - │   └── python3 -> python3.7               # Python instances. 
 - ├── include 
 - ├── lib 
 - │   └── python3.7 
 - │       └── site-packages              # Stores local site packages 
 - └── pyvenv.cfg 
 
  
  
但丁和维吉尔回到了人世间——但丁《神曲·地狱篇》第34章 
插图:Gustave Doré                          (编辑:我爱故事小小网_铜陵站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |