django - Apache 无法访问为 Django 项目设置的虚拟环境

标签 django apache virtualenv

我创建了一个名为“pyapps”的 virtualenv,并在其中安装了 pinax 和 django。我已经安装了 apache 2 和 mod_wsgi。我创建了一个名为“apache”的目录在我的 django 项目(testproject)中并将“django.wsgi”文件放入该目录中。这是我的 wsgi 文件的内容:

import os
import sys

# put the Django project on sys.path
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../../")))

os.environ['DJANGO_SETTINGS_MODULE'] = 'textpisodes.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

然后我创建了一个目录 '/check/www' 并将我的项目文件夹和 pyapps 文件夹放入 '/check/www' 中.我在 /check/www 上 chmoded 777。

最后我创建了一个虚拟主机,其内容如下:

<VirtualHost *:80>
    ServerAdmin myemail
    ServerName djangoserver

    WSGIDaemonProcess textpisodes user=rajat threads=10 python-path=/check/www
    WSGIProcessGroup textpisodes

    WSGIScriptAlias / /check/www/textpisodes/apache/django.wsgi
    <Directory /check/www/textpisodes/apache>
        Order deny,allow
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

现在,当我尝试访问“http://djangoserver”时,我得到的只是内部服务器错误。以下是我的 apache 日志文件的内容。

[Thu Sep 13 18:39:51 2012] [error] [client 127.0.0.1] mod_wsgi (pid=4890): Target WSGI script '/check/www/textpisodes/apache/django.wsgi' cannot be loaded as Python module.
[Thu Sep 13 18:39:51 2012] [error] [client 127.0.0.1] mod_wsgi (pid=4890): Exception occurred processing WSGI script '/check/www/textpisodes/apache/django.wsgi'.
[Thu Sep 13 18:39:51 2012] [error] [client 127.0.0.1] Traceback (most recent call last):
[Thu Sep 13 18:39:51 2012] [error] [client 127.0.0.1]   File "/check/www/textpisodes/apache/django.wsgi", line 9, in <module>
[Thu Sep 13 18:39:51 2012] [error] [client 127.0.0.1]     import django.core.handlers.wsgi
[Thu Sep 13 18:39:51 2012] [error] [client 127.0.0.1] ImportError: No module named django.core.handlers.wsgi

最佳答案

您需要添加虚拟环境路径,以便 apache/python 可以在那里找到模块。

将其放入您的 apache 配置中(在 VirtualHost 条目之外)

WSGIPythonPath /home/me/virtualenv/env1/lib/python2.7/site-packages

或者将其放入 wsgi 文件的 sys.path 中。

关于django - Apache 无法访问为 Django 项目设置的虚拟环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12407100/

相关文章:

python - 根据两个字段的总和过滤数据

django - 将 KML 转换为 Postgis- Django/Python

apache - 远程访问 Apache 服务器

mysql - host localhost 不允许连接到这个 MySQL 服务器

php - 我可以像在 PHP 中一样找到正在运行 Web 服务器的用户吗?

python - 在一个命令中使用 virtualenv 和 pip 设置新的开发环境

python - 如何确保只在 virtualenv 中调用 pip?

javascript - 如果多个用户同时调用 Python 函数是否有效?

python - 为 Windows 激活 venv (Python 3.7.2)

Python Django Celery AsyncResult 内存泄漏