2016-12-22 67 views
0

我目前是网络编程的新手。最近我一直在研究这个Django项目,并且我一直在阅读关于虚拟环境的知识。在我的项目开始时,我无法建立一个虚拟环境,所以我没有它就继续进行这个项目。我的问题是Python的虚拟环境Django

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

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

此虚拟环境是否区分多个项目,还是将每个项目与其编码的Django/Python版本或两者分开?我想知道,因为我目前在我的主C:驱动器目录中输入了诸如python manage.py runserver(没有虚拟环境)的命令。那么这是否意味着我无法在没有虚拟环境的情况下同时执行多个项目?我还可以在没有虚拟环境的情况下工作多个项目吗? (我对此尤其感到困惑)

我应该试着为我的下一个项目设置一个虚拟环境,还是可以为当前的项目做这个工作(我已经完成了项目的一半,已经制作了模型,视图,模板等)?

任何澄清我的困惑的答案是非常感谢!

+0

您可以在不使用虚拟envs的情况下编写应用程序,但是您可以编写应用程序而无需使用源代码管理。你可以随时创建一个virtualenv,但是你的问题太广泛了。 – Sayse

回答

1

那么,这是初学者中最常见的问题之一。我,我自己面临这个问题,确实建立了多个项目,而不用担心虚拟环境。

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

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

如果没有虚拟环境,您的所有项目都将使用相同的安装包。

当您想要在项目完成时将项目移动到服务器时,您不知道该项目需要哪些软件包,因此您唯一的选择是在其中安装所有这些软件包。它将很快成为一个长长的清单,许多软件包对于这个特定的项目来说不是必需的。

使用虚拟环境时,每个项目都有一组已安装的软件包,而且它们不混合。更好。

现在就可以开始使用虚拟环境了。在您的项目目录,执行:

pip install virtualenv 

现在你有virtualenv中的命令(对所有项目)。

virtualenv env 

现在,您的项目目录中有一个目录“env”,它将包含此项目的virtualenv。

env\Scripts\activate 

现在你正在使用这个virtualenv(你的提示改变,以反映这一点)。

pip install django 

只为该项目安装Django。

pip freeze 

显示您已安装哪些软件包,现在仅适用于此项目。

pip freeze > requirements.txt 

创建一个需求。您可以使用txt来记住哪些包需要安装,并且作为

的输入
pip install -r requirements.txt 

安装它们。这或多或少都是你需要的。

0

在java中,所有使用的库都可以打包成war或jar文件。好处是你不需要担心操作系统的环境。

Python是一种纯粹的动态语言。如果没有虚拟环境,所有的python库都需要安装到系统路径中,并在所有python项目之间共享。

想象一下,您正在开发一个django 1.10项目。你找到一个演示项目。你想在你的机器上运行它。但它只与django 1.8兼容。你不能在同一台机器上安装同一个库的两个版本,所以你会陷入困境。

虚拟环境解决了这样的问题。

但是当然虚拟环境并不完美。有一些python库像mysql-python,它依赖于libmysqld。如果这些库在您的项目中使用,它不能完全独立于OS中的设置。我认为最好的做法是将虚拟机与docker结合使用。 IDE像pycharm支持通过docker远程运行