首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Django的虚拟环境

Python Django的虚拟环境
EN

Stack Overflow用户
提问于 2016-12-22 09:17:15
回答 6查看 15.7K关注 0票数 8

我目前是一个网络编程新手。我最近一直在做Django项目,我一直在阅读关于虚拟环境的文章。在我的项目开始时,我无法建立一个虚拟环境,所以我继续没有它的项目。我的问题是

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

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

这个虚拟环境是否区分了多个项目,还是将每个项目与其编码的Django/Python版本分开,或者两者兼而有之?我想知道,因为我目前在我的主C:驱动器目录中输入了诸如python manage.py runserver (没有虚拟环境)之类的命令。那么,这是否意味着如果没有每个项目的虚拟环境,我就不能一次完成多个项目?如果没有虚拟环境,我还能在多个项目上工作吗?(我对此特别感到困惑)

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-12-22 09:35:19

这是初学者中最常见的问题之一。我,我自己已经面对这个问题,并且在没有担心虚拟环境的情况下构建了多个项目。

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

  1. 依赖关系管理:防止多个项目的依赖关系之间的冲突。
  2. 轻松安装并在不同的机器上设置新项目:将依赖项存储在requirements.txt文件中,然后运行pip install -r requirements.txt来安装依赖项。
票数 7
EN

Stack Overflow用户

发布于 2016-12-22 09:23:38

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

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

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

您现在可以开始使用虚拟env了。在项目目录中,请执行以下操作:

代码语言:javascript
复制
pip install virtualenv  

现在您有了virtualenv命令(用于所有项目)。

代码语言:javascript
复制
virtualenv env

现在,您在项目目录中有了一个目录"env“,它将包含该项目的虚拟目录。

代码语言:javascript
复制
env\Scripts\activate

现在,您正在使用该虚拟服务器(您的提示符已更改以反映这一点)。

代码语言:javascript
复制
pip install django

只为此项目安装Django。

代码语言:javascript
复制
pip freeze

显示安装了哪些包,现在只用于此项目。

代码语言:javascript
复制
pip freeze > requirements.txt

创建一个requirements.txt,您可以使用它来记住哪些包需要安装,并作为输入

代码语言:javascript
复制
pip install -r requirements.txt

安装它们。这差不多就是你所需要的。

票数 15
EN

Stack Overflow用户

发布于 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远程运行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41279547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档