大功告成,多亏了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é (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|