django 如何与 virtualenv 一起工作?

     2023-02-24     135

关键词:

【中文标题】django 如何与 virtualenv 一起工作?【英文标题】:How does django work with virtualenv? 【发布时间】:2012-06-22 02:38:41 【问题描述】:

我了解如何创建 virtualenv,激活该 virtualenv,然后在激活 virtualenv 时安装 django。例如:

virtualenv ~/narnia
source ~/narnia/bin/activate
pip install django

据我了解,当您“激活”一个虚拟环境时,它只会在您处于 shell 时更改一些路径变量,仅此而已。因此,当激活 narnia 时使用 pip 安装 django 时,它只是将东西安装到相对于 ~/narnia 而不是相对于 /usr 的位置(例如 ~/narnia/lib/python2.6/site-packages 而不是 /usr/ lib/python2.6/site-packages)。

现在假设我想用那个 virtualenv 创建一个 django 项目。我什至不必被激活,对吗?我可以这样做:

deactivate
cd ~
narnia/bin/django-admin.py startproject myproject

所以,如果我有一个使用“myproject”设置的 Web 服务器......此时该 django 项目如何与 narnia virtualenv 绑定?系统路径变量不会只是正常的系统范围的 python 路径吗? “myproject”是如何知道使用narnia环境的?

我对它的工作原理有点困惑。任何帮助表示赞赏。

谢谢!

【问题讨论】:

或者也许 django 项目本身不依赖于任何特定环境,但 WSGI 是? 【参考方案1】:

Web 服务器通常有一种方法来配置其 Python 使用。您可以设置环境变量、路径等。使用这些工具指向 virtualenv。

例如,在我的 Apache httpd.conf 中:

WSGIDaemonProcess myapp processes=2 threads=12 python-path=/home/nedbat/webapps/myapp/server:/home/nedbat/webapps/myapp/lib/python2.7
WSGIProcessGroup myapp
WSGIRestrictEmbedded On
WSGILazyInitialization On
WSGIScriptAlias / /home/nedbat/webapps/myapp/myapp.wsgi

我有一个 myapp.wsgi 文件:

import os
import site
import sys

VE = '/home/nedbat/webapps/myapp/ve'

site.addsitedir(VE + '/lib/python2.7/site-packages')

os.environ['DJANGO_SETTINGS_MODULE'] = 'prod_settings'
os.environ['USE_PYPY'] = 'y'
os.environ['TMPDIR'] = '/home/nedbat/webapps/myapp/tmp'

from django.core.handlers.wsgi import WSGIHandler

application = WSGIHandler()

【讨论】:

酷,谢谢。我将不得不研究如何配置我的 wsgi 服务器以使用 virtualenv。 有关 mod_wsgi 的详细信息,请参阅code.google.com/p/modwsgi/wiki/VirtualEnvironments【参考方案2】:

如果您希望在生产环境甚至暂存环境中使用带有 Django 的 virtualenv,我希望您激活该环境,并且取决于您是手动执行还是使用例如virtualenvwrapper,设置适当的环境变量。我不确定在虚拟环境中安装 Django 然后不使用它的目的是什么。

顺便说一句,当我看到这个时,我看到相关的问题Django and VirtualEnv Development/Deployment Best Practices 出现在侧边栏中。这似乎与您的设置相当相关。

【讨论】:

Django TemplateSyntaxError: current transaction is aborted,这个异常是啥意思? postgresql 8.4 可以与 django 一起正常工

】DjangoTemplateSyntaxError:currenttransactionisaborted,这个异常是啥意思?postgresql8.4可以与django一起正常工作吗?【英文标题】:DjangoTemplateSyntaxError:currenttransactionisaborted,whatdoesthisexceptionmean?Doespostgresql8.4workfinewithdjango?Dja 查看详情

nginx+uwsgi+django+virtualenv+supervisor发布web服务器(代码片段)

 导论WSGI是Web服务器网关接口。它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求)基于wsgi运行的框架有bottle,DJango,Flask,用于解析动... 查看详情

如何复制virtualenv

】如何复制virtualenv【英文标题】:Howtoduplicatevirtualenv【发布时间】:2011-11-1807:34:41【问题描述】:我有一个现有的virtualenv,其中包含很多包,但Django是旧版本。我想要做的是复制这个环境,所以我有另一个环境与完全相同的包... 查看详情

如何在不包含主机环境的站点包文件夹的情况下将 pywin32 与 virtualenv 一起使用?

...何在不包含主机环境的站点包文件夹的情况下将pywin32与virtualenv一起使用?【英文标题】:HowcanIusepywin32withavirtualenvwithouthavingtoincludethehostenvironment\'ssite-packagesfolder?【发布时间】:2010-12-2206:22:38【问题描述】:我正在使用Python2.6... 查看详情

试图让 OpenCV 3.2.0 与 virtualenv 一起工作

】试图让OpenCV3.2.0与virtualenv一起工作【英文标题】:tryingtomakeOpenCV3.2.0workwithvirtualenv【发布时间】:2017-12-2220:33:33【问题描述】:我在Ubuntu16.04上使用Python2.7和virtualenv和virtualenvwrapper。通过关注thisguide,我设法让以下脚本与我的... 查看详情

如何使用 virtualenv 在 django 中启动一个新项目

】如何使用virtualenv在django中启动一个新项目【英文标题】:Howtostartanewprojectindjangousingvirtualenv【发布时间】:2019-03-2520:09:21【问题描述】:我刚刚安装了virtualenv,并在其中安装了django。但是,当我在bin文件中进入django-admin终端... 查看详情

如何在 virtualenv 中为 Django 激活 mysqldb

】如何在virtualenv中为Django激活mysqldb【英文标题】:HowtoactivatemysqldbforDjangoinvirtualenv【发布时间】:2012-11-2617:07:15【问题描述】:好的。所以我一直在疯狂尝试用Django设置Pythonvirtualenv。尝试了几个不同的教程,首先在Mac上,然后... 查看详情

Django 和 VirtualEnv 开发/部署最佳实践

】Django和VirtualEnv开发/部署最佳实践【英文标题】:DjangoandVirtualEnvDevelopment/DeploymentBestPractices【发布时间】:2011-01-1512:16:28【问题描述】:只是好奇人们如何结合virtualenv部署他们的Django项目更具体地说,您如何使您的生产virtualen... 查看详情

CASCADE 究竟如何与 Django 中的多对多字段一起工作

】CASCADE究竟如何与Django中的多对多字段一起工作【英文标题】:HowexactlydoesCASCADEworkwithManyToManyFieldsinDjango【发布时间】:2020-08-0907:19:41【问题描述】:我想知道CASCADE究竟是如何与Django中的多对多字段一起工作的。一个简短的例... 查看详情

如何将 django 的 Q 与 django taggit 一起使用?

】如何将django的Q与djangotaggit一起使用?【英文标题】:HowdoIusedjango\'sQwithdjangotaggit?【发布时间】:2013-06-3011:49:56【问题描述】:我有一个标有“一”和“二”的Result对象。当我尝试查询标记为“一”和“二”的对象时,我什么... 查看详情

如何将 Django 与 Tornado 网络服务器一起使用?

】如何将Django与Tornado网络服务器一起使用?【英文标题】:HowuseDjangowithTornadowebserver?【发布时间】:2011-02-0120:08:03【问题描述】:【问题讨论】:【参考方案1】:非常简单(尤其是django1.4)。1-只需构建您的django项目(和应用... 查看详情

如何将 Django 信号与抽象模型一起使用?

】如何将Django信号与抽象模型一起使用?【英文标题】:HowdoIuseDjangosignalswithanabstractmodel?【发布时间】:2011-02-1103:53:38【问题描述】:我有一个保留磁盘缓存的抽象模型。当我删除模型时,我需要它来删除缓存。我希望每个派生... 查看详情

JWT 如何与 django-phonenumber-field 一起使用

】JWT如何与django-phonenumber-field一起使用【英文标题】:HowJWTworkswithdjango-phonenumber-field【发布时间】:2019-03-2222:31:20【问题描述】:我使用django-phonenumber-field作为我的电话号码模型字段和序列化程序。它奏效了,一切都很好。现在... 查看详情

Ajax 如何与动态 Django 下拉列表一起工作?

】Ajax如何与动态Django下拉列表一起工作?【英文标题】:HowcanAjaxworkwithadynamicDjangodropdownlist?【发布时间】:2016-02-0512:24:28【问题描述】:我正在制作这个小网络应用程序,它需要2个地址,使用谷歌地图计算距离,并根据车辆mpg... 查看详情

django 如何同时与 websocket 服务器和 webserver 一起工作?

】django如何同时与websocket服务器和webserver一起工作?【英文标题】:Howdoesdjangoworkwithwebsocketserverandwebserversimultaneously?【发布时间】:2016-11-2520:25:51【问题描述】:我觉得我对websocketserver和webserver的理解有些混乱。所以我遵循了dja... 查看详情

django 的模板标签“include”如何与 None 一起使用

】django的模板标签“include”如何与None一起使用【英文标题】:Howdjango\'stemplatetag"include"workwithNone【发布时间】:2016-04-1710:28:08【问题描述】:我在我的模板中使用了一个包含标签,如下所示:%includefragment_variable%其中fragm... 查看详情

Virtualenv 与 Eclipse(伽利略)[关闭]

】Virtualenv与Eclipse(伽利略)[关闭]【英文标题】:VirtualenvwithEclipse(Galileo)[closed]【发布时间】:2010-11-1120:03:35【问题描述】:有没有人知道如何让Eclipse(Galileo)、PyDev和Virtualenv一起工作?我专门尝试运行Pinax,但任何指令都可以。... 查看详情

对于 django 测试,我如何将 keepdb 与 mariadb 一起使用

】对于django测试,我如何将keepdb与mariadb一起使用【英文标题】:Fordjangotesting,howdoIusekeepdbwithmariadb【发布时间】:2019-03-1517:57:34【问题描述】:我有一个包含很多非托管表的数据库,我正在将这些表用于django应用程序。为了进行... 查看详情