Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么是依赖关系?我为什么要关心它们?_Python_Django_Dependencies_Virtualenv - Fatal编程技术网

Python 什么是依赖关系?我为什么要关心它们?

Python 什么是依赖关系?我为什么要关心它们?,python,django,dependencies,virtualenv,Python,Django,Dependencies,Virtualenv,我是web开发的初学者,目前正在创建Django web应用程序以与MySQL数据库接口。 在我阅读Django文档的过程中,它一直在谈论“使用VirtualEnvironment(如VirtualEnvironment)隔离依赖项” 我真的不明白什么是依赖关系,以及为什么创建一个虚拟环境可以帮助它们彼此“隔离”。 什么是虚拟环境?它与运行在您机器上的另一台机器类似吗 对于这些概念性问题的任何输入都将不胜感激。一些软件包需要运行其他软件包的特定版本。例如,如果您构建了一些代码以显式地使用mypa

我是web开发的初学者,目前正在创建Django web应用程序以与MySQL数据库接口。
在我阅读Django文档的过程中,它一直在谈论“使用VirtualEnvironment(如VirtualEnvironment)隔离依赖项”

我真的不明白什么是依赖关系,以及为什么创建一个虚拟环境可以帮助它们彼此“隔离”。
什么是虚拟环境?它与运行在您机器上的另一台机器类似吗


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

一些软件包需要运行其他软件包的特定版本。例如,如果您构建了一些代码以显式地使用
mypackage
version 1.0.0运行,并且出现了一个新版本,不推荐您所需的功能,那么执行
pip install mypackage
将破坏您的代码

示例:如果要打包代码,其中一个依赖项将是
django
。如果您尝试在不使用
django
的情况下运行代码,它会中断,并说
ModuleNotFound:No module name'django'
。因此,在运行代码之前,您需要
pip安装它。同样,您也不需要非常早期版本的
django
,因为它的一些功能可能在早期版本中不可用,或者它们的功能可能不同

virtualenv本身就是一个新的python解释器。它有自己的python可执行文件、自己的
站点包
包目录等。您可以通过命令提示符/shell激活
环境,然后可以访问它
anaconda
是virtualenv manager的另一个示例。在虚拟环境中,您可以管理与特定应用程序相匹配的包,这样构建新环境不会影响您的其他代码,也不会潜在地破坏上述代码,因为它是一个独立的解释器,与您机器上的基本python安装无关


这还允许您运行不同的解释器。您可以有一个用于python2.7的venv和一个用于python3.6的venv,VirtualEnvironment是可以在您的机器/服务器中创建的独立python环境,它们非常有用,因为它们中的每一个都为您可能拥有的各种性质的每个python项目/程序持有特定的/相关的库(无论是web应用程序、机器学习应用程序、数据处理微服务、物联网等)

例如,假设您的计算机/服务器承载2个或更多python项目/程序。每个项目/程序可能需要不同版本的Django、MySQL connector等(可以通过
pip
)安装)。因此,您需要为每个项目/程序提供单独的python环境以防止冲突

创建VirtualNV很简单,您可以通过
pip
安装它们。 见:


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

因此,基本上你是说虚拟环境是干净的,你可以启动并安装不同版本的语言或框架?是的,对于软件包/库,它只是创建新的“干净的板岩”。但是,对于不同的python版本,您需要分别使用python2和python3二进制文件创建VirtualEnvironment,除非您使用的是anaconda,它在创建具有各种python/库版本的“conda环境”时更加“灵活”。