我第一次使用virtualbox和vagrant(CentOS 7)为Django创建了一个环境。
但我看到的每个教程都说我需要使用pyenv或virtualenv。我认为它们习惯于为Django创建一个虚拟环境。但我不知道为什么我需要使用pyenv或virtualenv。 (例如,Cakephp3不需要像pyenv或virtualenv这样的软件包。)
我正在使用已经是虚拟环境的virtualbox和vagrant,所以我想我正在另一个虚拟环境中创建虚拟环境。我不确定这是否有意义。如果我使用像virtualbox或vmware这样的虚拟环境,那么pyenv和virtualenv可能不是必需的吗?
它们对Django至关重要吗?当我在实际服务器中部署Django时,我是否还需要使用pyenv或virtualenv?
答案 0 :(得分:3)
不是必需的但是当您开始处理Django项目时,建议在虚拟环境中工作。
虚拟环境的重要性。
虚拟环境是一种在您的计算机上拥有多个版本的python而不会相互冲突的方式,每个版本都可以被视为一个开发环境,您可以拥有不同版本的python库和模块所有人都彼此孤立。
以最简单的方式,虚拟环境为您提供独立于主机操作系统的开发环境。您可以在virtualenv的/bin
文件夹中安装和使用必要的软件,而不是使用主机上安装的软件。
很多时候,不同的项目需要同一个软件包的不同版本,并且将每个项目保持在单独的虚拟环境中会有很大帮助。
强烈建议为每个项目设置单独的virtualenv。一旦你习惯了它,它对于开发来说似乎相当微不足道并且非常有用,可以消除很多未来的麻烦。
答案 1 :(得分:2)
不,对于Django使用virtualenv并不是必需的,但建议使用它,因为它隔离了您用于系统上项目的多个版本的python或库。如果您没有使用virtualenv,那么该库将成为您的python主目录的一部分。
例如: 如果您正在为一个项目使用某个库的版本1,而稍后在其他项目中使用,或者如果需要使用该库的版本2,那么使用特定的virtualenv(如果您同时处理多个项目) project使您可以毫无问题地使用多个库。
答案 2 :(得分:1)
VirtualBox将您的开发操作系统与正常的操作系统隔离开来。 Virtualenv将您项目的Python包与系统Python包隔离开来。
许多Linux发行版将Python包作为其他软件的依赖项安装到系统范围的site-packages
目录中。 Python没有办法对具有相同名称的软件包进行版本化,因此当您的项目依赖于package==10.0.0
但您的发行版已经安装package==0.0.2
时,您将遇到问题而无法在不破坏某些内容的情况下进行升级
虚拟环境非常轻量级。它们实际上只是PATH
环境变量中的一个新条目以及一些配置更改,以使Python仅在包的特定位置查看。
使用virtualenv除了输入一个额外的命令来激活它之外没有真正的缺点。
答案 3 :(得分:1)
如果以后您需要在同一virtualbox中使用其他版本的python 和具有不同版本的依赖项创建其他项目,那么pyenv和virtualenv将为您节省无数的头痛。