我是Web开发的初学者,目前从事创建Django Web应用程序以与MySQL数据库交互的操作。
在我阅读了有关Django的文档的整个过程中,它一直在谈论“使用诸如virtualenv之类的虚拟环境隔离依赖项”。
我不太了解什么是依赖项,以及为什么创建虚拟环境会帮助彼此“隔离”。
什么是虚拟环境??这就像您的计算机上正在运行另一台计算机吗?
对于这些概念性问题的任何投入,将不胜感激。
答案 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
安装)。