python - paquetes - instalar pip en windows 10
La secuencia de comandos de WSGI de destino no se puede cargar como módulo de Python (11)
Estoy intentando implementar mod_wsgi con apache para ejecutar una aplicación django pero obtengo un error 500 error interno del servidor. Los registros de Apache muestran:
[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
Mi host virtual de apache es el siguiente:
<VirtualHost *:80>
DocumentRoot /home/user/bms
<Directory /home/user/bms>
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess bms user=user group=user processes=2 threads=25 python-path=/usr/local/lib/python2.7/site-packages
WSGIProcessGroup bms
WSGIScriptAlias / /home/user/bms/apache/django.wsgi
</VirtualHost>
Y el archivo wsgi referenciado en el directorio de mi aplicación con permisos 0777:
import os
import sys
path = ''/home/user/bms''
if path not in sys.path:
sys.path.append(path)
os.environ[''DJANGO_SETTINGS_MODULE''] = ''bms.settings''
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Escuché que esto puede deberse a que el usuario de apache no tiene los permisos correctos. Sin embargo, no tengo idea de cómo solucionar esto. También probé a iniciar el deamon con el usuario de www-data y esto no solucionó el problema.
EDITAR :
Lo resolví copiando el archivo de hosts virtuales en el predeterminado y luego deshabilitando el anterior con a2dissite. No tengo idea de cómo puedo hacerlo "correctamente" y configurarlo, así que apache va al host virtual que yo quiero.
¿Lo intentó sin la opción WSGIDaemonProcess?
No tuve problemas para configurar mod_wsgi en casa, pero lo hice sin la opción daemon. Mencionaste resolver moviendo archivos de hosts virtuales y tomé nota de esta advertencia en los documentos para WSGIDaemonProcess:
También tenga en cuenta que el nombre del grupo de procesos del daemon debe ser único para todo el servidor. Es decir, no es posible usar el mismo nombre de grupo de procesos de daemon en diferentes hosts virtuales.
No sé si eso es una coincidencia.
A medida que esta pregunta se convirtió en una especie de grupo para recopilar soluciones a los problemas que dan como resultado el error de otorgarle el título a esta pregunta, me gustaría agregar también esta.
En mi caso, quiero ejecutar OpenStack Keystone (Ocata) usando Apache y WSGI en Ubuntu 16.04.2. Los procesos comienzan pero apenas consulto Keystone obtengo
mod_wsgi (pid=20103): Target WSGI script ''/opt/openstack/bin/keystone-wsgi-public'' cannot be loaded as Python module.
Tenía dos fantasmas, uno tenía
WSGIDaemonProcess keystone-public ...
WSGIProcessGroup keystone-public ...
mientras que el otro tenía
WSGIDaemonProcess keystone-admin ...
WSGIProcessGroup keystone-admin ...
Resolví el problema al renombrarlos. Las entradas de vhost ahora dicen:
WSGIDaemonProcess kst-pub ...
WSGIProcessGroup kst-pub ...
y
WSGIDaemonProcess kst-adm ...
WSGIProcessGroup kst-adm ...
No investigué más. Resuelto como funciona para mí.
Añadiendo a la lista así es como lo hice funcionar.
Estaba intentando instalar CKAN 2.7.2 en CentOS 7 desde la fuente y seguí encontrando este error. Para mí fue porque SELinux estaba habilitado. No necesité deshabilitarlo. En su lugar, después de leer https://www.endpoint.com/blog/2010/10/13/selinux-httpd-modwsgi-26-rhel-centos-5 , descubrí que al encender httpd_can_network_connect se solucionó:
setsebool -P httpd_can_network_connect on
Desde esa página:
httpd_can_network_connect : permite que httpd establezca conexiones de red, incluidas las locales que creará en una base de datos.
En mi propio caso en Windows en xampp, estaba cargando incorrectamente la ruta de la aplicación en el archivo wsgi.py de esta manera:
Incorrecto :
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'')
En lugar de:
Correcto:
sys.path.append(''C:/xampp/htdocs/advisory_portal/advisory_portal'')
sys.path.append(''C:/xampp/htdocs/advisory_portal'')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "advisory_portal.settings")
application = get_wsgi_application()
No te olvides de importar el paquete sys python
Para mí, el problema era la falta de coincidencia de la versión de wsgi python. Estaba usando Python 3, entonces:
$ sudo apt-get remove libapache2-mod-python libapache2-mod-wsgi
$ sudo apt-get install libapache2-mod-wsgi-py3
Advertencia de @alxs antes de copiar / pegar estos comandos:
Si hay proyectos de python 2 ejecutándose en el servidor que usan wsgi y apache, los comandos anteriores los cerrarán de manera efectiva.
Para mí, el problema era que el script WSGI no era ejecutable.
sudo chmod a+x django.wsgi
o solo
sudo chmod u+x django.wsgi
siempre y cuando tengas el dueño correcto
Sé que esta pregunta es bastante antigua, pero luché con esto por unas ocho horas en este momento. Si tiene un sistema con SELinux habilitado y ha puesto su virtualenv en lugares específicos, mod_wsgi no podrá agregar su python-path
específica a los paquetes del sitio. Tampoco generará ningún error; Como resulta que el mecanismo que utiliza para agregar la python-path
especificada a los paquetes de sitio es con el módulo de site
Python, específicamente site.adduserdir()
. Este método no genera ningún error si falta el directorio o no se puede acceder a él, por lo que mod_wsgi tampoco genera ningún error.
De todos modos, intente desactivar SELinux con
sudo setenforce 0
o asegurándose de que el proceso en el que está ejecutando Apache tenga las ACL apropiadas con SELinux para acceder al directorio en el que se encuentra virtualenv.
Si instala las dependencias de Python de su proyecto dentro de un virtualenv, también necesitará agregar la ruta al directorio de este virtualenv a su ruta de Python. Para ello, agregue una ruta adicional a su directiva WSGIPythonPath, con varias rutas separadas por dos puntos (:) si utiliza un sistema tipo UNIX, o un punto y coma (;) si usa Windows
Tuve el mismo problema y al principio no me di cuenta de que podía desplazarme hacia abajo y ver el mensaje de error real. En mi caso, fue un error de importación:
ImportError: No module named bootstrap3
Después de instalarlo a través de pip (pip install django-bootstrap3), reinicié Apache y funcionó.
Tuve un problema similar con este mensaje de error en los registros:
La secuencia de comandos de WSGI de destino ''/home/web2py/wsgihandler.py'' no se puede cargar como módulo de Python.
La solución fue la eliminación de una directiva incorrecta WSGIPythonHome (apuntando al directorio de la aplicación) desde /etc/httpd/conf.d/wsgi.conf
Estoy en RedHat usando repositorios de CentOS.
Recomiende seguir las instrucciones de instalación / configuración de Graham Dumpleton. La configuración de prueba contra la aplicación helloworld me mostró que mod_wsgi
estaba funcionando y que la configuración era mod_wsgi
.
Sin embargo, el mensaje de error dio poca pista de lo que estaba mal.
Ve a ver:
http://code.google.com/p/modwsgi/wiki/WhereToGetHelp?tm=6#Conference_Presentations
Le indicará algunas cosas, incluidos los permisos, y también la configuración correcta de sys.path en su secuencia de comandos WSGI, siendo este último su problema.