Python Django的虚拟环境

8

我目前是web编程的新手。最近我一直在做这个Django项目,并且一直在学习虚拟环境。在我的项目开始时,我无法设置虚拟环境,所以我没有使用它来继续进行这个项目。我的问题如下:

这个虚拟环境是否真的有必要?

如果我未来想做更多的Django项目,是否需要这个虚拟环境来区分这些项目,因为现在我正在从主C:目录下的命令提示符中运行所有命令?

这个虚拟环境是为了区分不同的项目还是针对每个项目的Django/Python版本进行分离,还是两者都有?我在想,因为目前我在我的主C:驱动器目录下输入类似于 python manage.py runserver (没有使用虚拟环境)。那么这意味着我不能在没有为每个项目创建虚拟环境的情况下同时处理多个项目吗?我可否在没有虚拟环境的情况下仍然可以处理多个项目?(我一直对此感到困惑)

我应该尝试为我的下一个项目设置虚拟环境,还是可以在当前项目中设置虚拟环境(我已经完成了该项目的一半,已经创建了模型、视图、模板等)?


您可以编写应用程序而不使用虚拟环境,但这样就可能永远不会使用源代码控制。您可以随时创建一个虚拟环境,但你的问题太广泛了。 - Sayse
6个回答

15

没有虚拟环境时,所有的项目都会使用相同的安装包。

当你想要将项目移到完成后的服务器上时,你不知道哪些包是需要的,所以你唯一的选择是在那里也安装所有这些包。它很快就会变成一个很长的列表,其中许多包对于该特定项目来说并非必需的。

使用虚拟环境时,每个项目都有一组安装的包,它们不会混合。非常好用。

现在你可以开始使用虚拟环境。在你的项目目录中执行以下操作:

pip install virtualenv  

现在你拥有了virtualenv命令(适用于所有项目)。

virtualenv env
现在您的项目目录中有一个名为 "env" 的目录,其中将包含此项目的虚拟环境。
env\Scripts\activate

现在你正在使用这个虚拟环境(提示符已更改以反映这一点)。

pip install django

仅为此项目安装Django。

pip freeze

显示此项目中已安装的软件包。

pip freeze > requirements.txt

创建一个 requirements.txt 文件,你可以用它来记录需要安装的软件包,并作为输入。

pip install -r requirements.txt

那就可以安装它们。那基本上就是你所需要的全部。


7

嗯,这是初学者中最常见的问题之一。我也曾经面对过这个问题,在不担心虚拟环境的情况下构建了多个项目。

但是,最近我意识到使用虚拟环境的重要性。使用虚拟环境的一些好处包括:

  1. 依赖管理:防止多个项目的依赖之间发生冲突。
  2. 安装便捷并在不同机器上设置新项目:将您的依赖存储在 requirements.txt 文件中,并运行 pip install -r requirements.txt 在任何地方安装依赖。

3
在Java中,所有使用的库都可以打包成war或jar文件。优点是您不需要担心操作系统的环境。
Python是一种纯动态语言。如果没有虚拟环境,则所有python库都需要安装到系统路径并在所有python项目中共享。
想象一下,您正在开发一个django 1.10项目。您找到了一个演示项目。您想在自己的计算机上运行它。但它只与django 1.8兼容。您不能在同一计算机上安装两个版本的相同库,所以您被卡住了。
虚拟环境解决了这个问题。
但是虚拟环境当然不是完美的。有些python库比如mysql-python依赖于libmysqld。如果这些库用于您的项目,则它不能完全独立于操作系统中的设置。我认为最佳实践是使用结合docker的虚拟机。像pycharm这样的IDE支持通过docker远程运行。

1
您需要Python虚拟环境来管理项目的Python包依赖项,这样它将始终具有其正确版本的包,例如在安装到另一台机器时。Python虚拟环境可以使用pip(用于包)和virtualenv(用于虚拟环境)或者conda(两者都可以)进行管理。
有关更多信息,请参见本文: "为什么需要Python环境以及如何使用Conda进行管理".

0

首先我们创建虚拟包装器

pip install virtualenv wrapper-win

然后创建包装环境,现在创建虚拟环境-

mkvirtualenv envname

(仅运行64位Python命令) 如果您想启动虚拟环境,则设置您的工作场所(目录) 使用命令提示符并编写命令

workon envname


0
虚拟环境可以在计算机上创建Python和软件包的虚拟安装。比如,如果您有一个Web应用程序。随着时间的推移,软件包会得到更新,有时会出现破坏您的Web应用程序或Web项目所依赖的向后兼容性的更改。那么,如果您想测试软件包更新的新功能,但又不想破坏您的Web应用程序,该怎么办呢?毕竟,每次软件包更新都不能让您关闭网站。这就是虚拟环境的作用。您可以创建一个包含较新版本软件包的虚拟环境,或者为旧版本软件包创建虚拟环境。然而,幸运的是,Anaconda已经为我们提供了虚拟处理程序,使这一切变得非常容易。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接