什么是依赖项,为什么我要关心它们?

时间:2018-12-31 01:25:11

标签: python django dependencies virtualenv

我是Web开发的初学者,目前从事创建Django Web应用程序以与MySQL数据库交互的操作。
 在我阅读了有关Django的文档的整个过程中,它一直在谈论“使用诸如virtualenv之类的虚拟环境隔离依赖项”。

我不太了解什么是依赖项,以及为什么创建虚拟环境会帮助彼此“隔离”。
什么是虚拟环境??这就像您的计算机上正在运行另一台计算机吗?

对于这些概念性问题的任何投入,将不胜感激。

2 个答案:

答案 0 :(得分:0)

某些程序包需要其他程序包的特定版本才能运行。例如,如果您构建一些代码以在mypackage版本1.0.0中显式运行,而出现了较新的版本,该版本已弃用了您所需的功能,那么执行pip install mypackage将会破坏您的代码。

示例:如果要打包代码,则依赖项之一将是django。如果您尝试在没有django的情况下运行代码,则代码会中断,并显示ModuleNotFound: No module named 'django'。因此,您需要在运行代码之前pip install。同样,您不希望django早期版本,因为它的某些功能可能在较早的版本中不可用,或者它们的功能可能有所不同。

virtualenv本身是一个新的python解释器。它具有自己的python可执行文件,自己的site-packages目录(用于包)等。您可以通过命令提示符/ shell activate访问环境,然后可以访问它。 anaconda是virtualenv管理器的另一个示例。在虚拟环境中,您可以管理软件包以匹配特定的应用程序,这样构建新环境不会影响您的其他代码,也不会破坏所说的代码,因为它是一个独立的解释器,与您的基本python安装无关机器。

这也允许您运行不同的解释器。您可以为python2.7设置一个venv,为python3.6设置一个venv

答案 1 :(得分:0)

Virtualenvs是可以在您的计算机/服务器中创建的隔离的python环境,它们非常有用,因为它们每个都为您可能拥有的各种性质的每个python项目/程序(例如Web应用程序,机器学习应用程序,数据处理微服务,物联网等)。

例如,假设您的机器/服务器托管2个或更多python项目/程序。它们每个都可能需要不同版本的Django,MySQL连接器等(可以通过pip安装)。因此,您需要为每个项目/程序使用单独的python环境,以防止冲突。

创建virtualenv很简单,您可以通过pip安装它们。 参见:https://virtualenv.pypa.io/en/latest/

此后,您可以为每个python项目创建不同的virtualenv,以隔离每个项目所需的python环境以及所需的库/包(对于每个环境,再次通过pip安装)。