我目前是一个网络编程新手。我最近一直在做Django项目,我一直在阅读关于虚拟环境的文章。在我的项目开始时,我无法建立一个虚拟环境,所以我继续没有它的项目。我的问题是
这个虚拟环境是否真的有必要?
如果我想在将来做更多Django项目,我是否需要这个虚拟环境来区分这些项目,因为现在我正在从我的主C:目录运行命令提示符中的所有命令?
这个虚拟环境是否区分了多个项目,还是将每个项目与其编码的Django/Python版本分开,或者两者兼而有之?我想知道,因为我目前在我的主C:驱动器目录中输入了诸如python manage.py runserver (没有虚拟环境)之类的命令。那么,这是否意味着如果没有每个项目的虚拟环境,我就不能一次完成多个项目?如果没有虚拟环境,我还能在多个项目上工作吗?(我对此特别感到困惑)
我应该尝试为我的下一个项目建立一个虚拟环境,还是为当前的这个项目设置一个虚拟环境(我已经完成了一半的项目,我已经建立了模型、视图、模板等等)?
发布于 2016-12-22 09:35:19
这是初学者中最常见的问题之一。我,我自己已经面对这个问题,并且在没有担心虚拟环境的情况下构建了多个项目。
但是,最近,我意识到了使用虚拟环境的重要性。使用虚拟环境的一些好处是:
pip install -r requirements.txt来安装依赖项。发布于 2016-12-22 09:23:38
如果没有虚拟环境,所有项目都将使用相同的安装包。
当您想在项目完成后将项目移动到服务器上时,您不知道该项目需要哪些包,所以您唯一的选择就是在那里安装所有这些包。它将很快成为一个很长的列表,许多软件包对于这个特定的项目来说并不是必需的。
在使用虚拟环境时,每个项目都有一组已安装的包,它们不会混合在一起。好多了。
您现在可以开始使用虚拟env了。在项目目录中,请执行以下操作:
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安装它们。这差不多就是你所需要的。
发布于 2016-12-22 09:39:55
在java中,所有使用的lib都可以打包到war或jar文件中。优点是您不需要担心操作系统的环境。
Python是一种纯动态语言。没有虚拟环境,所有python库都需要安装到系统路径中,并在所有python项目之间共享。
假设您正在开发django 1.10项目。你可以找到一个演示项目。你想在你的机器上运行它。但它只与django 1.8兼容。您不能在同一台机器上安装两个版本的相同库,因此您会被卡住。
虚拟环境解决了这样的问题。
但当然,虚拟环境并不完美。有像mysql-python这样的python库,它依赖于libmysqld。如果在您的项目中使用了这些lib,它就不能完全独立于OS中的设置。我认为最好的做法是使用虚拟机和docker相结合。IDE类似pycharm支持通过docker远程运行。
https://stackoverflow.com/questions/41279547
复制相似问题