【问题标题】:Virtualenv and Django apps not playing well togetherVirtualenv 和 Django 应用程序不能很好地协同工作
【发布时间】:2011-05-06 01:27:06
【问题描述】:

我决定是时候为我的 django 项目迁移到 virtualenv 了。除了一件事,一切都运行良好。即使使用 pip 安装到我的 virtualenv 中的应用程序可以毫无问题地导入到我的项目中,但在运行开发服务器时找不到这些应用程序中的任何 .url、模板、模板标签等。

我在环境中检查了我的 python 路径,并且我安装的站点包目录在路径中。

有人知道我做错了什么吗?

---添加信息---

由于我仍然遇到问题,我正在向这张票添加更多信息。我确定这是我正在做的事情,只是无法弄清楚它是什么。从一个全新的环境开始,在 ubuntu 和 osx 上进行了测试。

virtualenv --no-site-packages testpjt

然后我使用 pip 添加 django 和 django smuggler。这是要求文本

-e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django
django-smuggler==0.1.1-final

然后我用 pip 安装需求

pip install -E testpjt -r requirements.txt

一切似乎都安装得很好。于是我启动虚拟环境,对文件进行如下修改:

source ../bin/activate

将走私者添加到已安装的应用程序中:

    INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'smuggler',
)

在 urls.py 中添加管理员和走私者

from django.conf.urls.defaults import *

from django.contrib import admin
admin.autodiscover()

    urlpatterns = patterns('',
        (r'^admin/', include('smuggler.urls')),
        (r'^admin/', include(admin.site.urls)),
    )

然后我同步数据库并启动服务器:

../bin/python manage.py runserver 0.0.0.0:8000

我可以转到 ip/admin 并获得管理界面。我转到 ip/admin/load(转储,任何走私者 url)并获得 404。

为了测试,我可以进入 django shell 并:

from smuggler import urls

并且没有错误,所以我知道它们在那里。

如果我将 smuggler 的副本放在项目目录的基础上,它就可以正常工作。

【问题讨论】:

  • 你把所有这些应用都放到了 INSTALLED_APPS 中了吗?
  • 是的,它们在 INSTALLED_APPS 中,我没有从设置文件中得到任何错误。事实上,如果我从 django shell 运行,我可以毫无问题地“导入 appname”。如果我尝试“from appname.forms import formname”,它会告诉我找不到它。
  • 你能显示你的 INSTALLED_APPS 的内容和 pip freeze 的输出吗?
  • 对不起@rz,我错过了你的评论。我已将信息添加到问题中。

标签: django virtualenv


【解决方案1】:

您是在运行开发服务器之前激活虚拟环境吗?

【讨论】:

  • 是的,我先激活虚拟环境。
  • 由于您在运行开发服务器时没有遇到任何错误,因此虚拟环境本身可能存在问题。您是否尝试过创建另一个用于测试目的?
  • 是的,并且在 OSX 和 Ubuntu 系统上都试过了。真的很困惑到底发生了什么。
  • 您用来创建虚拟环境的命令行是什么?
  • virtualenv ENVNAME --no-site-packages
【解决方案2】:

这里的问题可能是您在 virtual-env 之外安装 django-smuggler。

首先激活虚拟环境。 然后在 virtual-env 中安装 django-smuggler,它应该可以正常工作了。

【讨论】:

    猜你喜欢
    • 2016-12-08
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 2018-01-18
    • 1970-01-01
    • 2018-12-25
    相关资源
    最近更新 更多