Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将目标WSGI脚本作为Python模块加载_Python_Django_Apache_Mod Wsgi_Wsgi - Fatal编程技术网

无法将目标WSGI脚本作为Python模块加载

无法将目标WSGI脚本作为Python模块加载,python,django,apache,mod-wsgi,wsgi,Python,Django,Apache,Mod Wsgi,Wsgi,我正在尝试将mod_wsgi与apache一起部署以运行django应用程序,但我收到一个错误500内部服务器错误,apache日志显示: [Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] mod_wsgi (pid=16142): Exception occurred processing WSGI script '/home/user/bms/apache/django.wsgi'. [Thu Jun 23 14:01:47 2

我正在尝试将mod_wsgi与apache一起部署以运行django应用程序,但我收到一个错误500内部服务器错误,apache日志显示:

[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] mod_wsgi (pid=16142): Exception occurred processing WSGI script '/home/user/bms/apache/django.wsgi'.
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] Traceback (most recent call last):
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64]   File "/home/user/bms/apache/django.wsgi", line 13, in <module>
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64]     import django.core.handlers.wsgi
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] ImportError: No module named django.core.handlers.wsgi
我听说这可能是因为apache用户没有正确的权限。然而,我不知道如何解决这个问题。我还试着用www数据用户启动deamon,但这并没有解决问题

编辑

import sys

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "advisory_portal.settings")

application = get_wsgi_application()
sys.path.append('C:/xampp/htdocs/advisory_portal/advisory_portal')
sys.path.append('C:/xampp/htdocs/advisory_portal')

我通过将虚拟主机文件复制到默认文件中,然后使用A2Dispatite禁用旧文件来解决这个问题。我不知道如何“正确”地进行设置,使apache转到我想要的虚拟主机。

您是否在没有WSGIDaemonProcess选项的情况下进行了尝试

我在家里设置mod_wsgi没有问题,但是没有守护程序选项。您提到了通过移动虚拟主机文件来解决问题,我注意到WSGIDaemonProcess文档中的警告:

还要注意,守护进程的名称 流程组必须是唯一的 整个服务器。也就是说,事实并非如此 可以使用相同的守护进程 以不同的方式处理组名称 虚拟主机


不知道这是否是巧合。

我在日志中遇到了类似的错误消息:

无法将目标WSGI脚本“/home/web2py/wsgihandler.py”作为Python模块加载

解决方案是从
/etc/httpd/conf.d/wsgi.conf

我在RedHat上使用CentOS存储库

建议遵循Graham Dumpleton的安装/配置说明。对helloworld应用程序的配置测试表明,
mod_wsgi
正在工作,配置出现故障


但是,错误消息几乎没有给出错误的线索。

对我来说,问题是WSGI脚本不可执行

sudo chmod a+x django.wsgi
或者只是

sudo chmod u+x django.wsgi

只要您有正确的所有者

对我来说,问题在于wsgi python版本不匹配。我使用的是python 3,所以:

$ sudo apt-get remove libapache2-mod-python libapache2-mod-wsgi
$ sudo apt-get install libapache2-mod-wsgi-py3
复制/粘贴这些命令之前,@alxs发出警告:

如果服务器上运行的python 2项目使用wsgi和apache,上述命令将有效地关闭它们。

我也遇到了同样的问题,起初我没有意识到我可以向下滚动查看实际的错误消息。就我而言,这是一个导入错误:

ImportError: No module named bootstrap3

在通过pip(pip install django-bootstrap3)安装了它之后,我重新启动了Apache,它成功了。

我知道这个问题已经很老了,但我刚刚花了大约八个小时来解决这个问题。如果您的系统启用了SELinux,并且已将VirtualNV放在特定位置,则mod_wsgi将无法将指定的
python路径添加到站点包中。它也不会引起任何错误;事实证明,它用于将指定的
python路径
添加到站点包的机制是使用python
site
模块,特别是
site.adduserdir()
。如果目录丢失或无法访问,此方法不会引发任何错误,因此mod_wsgi也不会引发任何错误

无论如何,请尝试使用关闭SELinux

sudo setenforce 0

或者,通过确保运行Apache as的进程具有适当的ACL和SELinux,以访问virtualenv所在的目录。

在我自己的例子中,在xampp中的windows上,我在wsgi.py文件中错误地加载了应用程序路径,如下所示:

不正确

import sys

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "advisory_portal.settings")

application = get_wsgi_application()
sys.path.append('C:/xampp/htdocs/advisory_portal/advisory_portal')
sys.path.append('C:/xampp/htdocs/advisory_portal')
而不是:

正确:


别忘了导入sys python包

,因为这个问题成了一个收集问题解决方案的池,这些问题会导致错误,因此我想添加这个问题

在我的例子中,我想在Ubuntu 16.04.2上使用Apache和WSGI运行OpenStack Keystone(OCTA)。过程开始了,但我一查询keystone就得到了

mod_wsgi (pid=20103): Target WSGI script '/opt/openstack/bin/keystone-wsgi-public' cannot be loaded as Python module.
我有两个vhost,一个有

WSGIDaemonProcess keystone-public ...
WSGIProcessGroup keystone-public ...
而另一个有

WSGIDaemonProcess keystone-admin ...
WSGIProcessGroup keystone-admin ...
我通过重命名它们解决了这个问题。vhost条目现在为:

WSGIDaemonProcess kst-pub ...
WSGIProcessGroup kst-pub ...


我没有进一步调查。解决方法对我有效。

如果在virtualenv中安装项目的Python依赖项,则还需要将此virtualenv目录的路径添加到Python路径中。为此,请向WSGIPythonPath指令添加一个附加路径,如果使用类似UNIX的系统,则多个路径之间用冒号(:)分隔;如果使用Windows,则多个路径之间用分号(;)分隔。添加到列表中这就是我如何使其工作的

我试图从源代码在CentOS 7上安装CKAN 2.7.2,但一直遇到这个错误。 对我来说,这是因为启用了SELinux。我不需要禁用它。相反,在阅读之后,我发现打开httpd\u可以\u网络\u连接修复它:

setsebool -P httpd_can_network_connect on
从该页:

httpd\u可以\u网络\u连接-允许httpd进行网络连接, 包括您将对数据库进行的本地操作


我遇到了类似的问题,例如apache日志错误“wsgi.py不能作为Python模块加载”


事实证明,我必须停止并启动apache,而不是仅仅重新启动它。

wsgi.py
中追加路径是方向,但不是追加
django
追加路径
sys.path.append(“/path/to/virtual/environment/lib/pythonX.X/site packages”)
修复了我的问题


这是一个django项目,在Ubuntu16.04上使用python2.7。

我遇到了同样的问题,它通过使用

sudo easy_install cx_Oracle
但请记住,在使用
easy\u install
安装之前,请先安装cx\u oracle


卸载命令:
pip uninstall cx\u oracle

在尝试了许多这些选项后,最终对我有效的解决方案很简单,但很难实现,因为我很难找到实际使用的路径

我用followi创建了一个基于django的夹层项目
WSGIDaemonProcess kst-adm ...
WSGIProcessGroup kst-adm ...
setsebool -P httpd_can_network_connect on
sudo easy_install cx_Oracle
/var/www/mysite$ python3 -m venv ./venv
/var/www/mysite$ source ./venv/bin/activate
(venv) /var/www/mysite$ mezzanine-project mysite
(venv) /var/www/mysite$ cd mysite
(venv) /var/www/mysite/mysite$
/var/www/mysite/mysite/mysite/wsgi.py
...<VirtualHost...>
    ...
    WSGIDaemonProcess mysite python-home=/var/www/mysite/venv python-path=/var/www/mysite/mysite
    WSGIProcessGroup mysite
    WSGIScriptAlias / /var/www/mysite/mysite/mysite/wsgi.py process-group=accounting
    <Directory /var/www/mysite/mysite/mysite>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>
    ...
</VirtualHost>...
yum remove mod_wsgi
yum install python35u-mod_wsgi
sudo nano /etc/apache2/apache2.conf
WSGIPythonPath /var/www/my_project
import os
import sys


sys.path.append("/var/www/html/myproject")
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

application = get_wsgi_application()