No se puede hacer que el entorno virtual de Python 3.10 funcione con mod_wsgi / servidor web de Apache.
Estoy tratando de configurar un servidor web de Flask. Estoy intentando utilizar un entorno virtual con Python 3.10. He estado trabajando en esto durante horas y probablemente he intentado todas las soluciones sugeridas en SO, pero ninguna parece funcionar para mí https://flask.palletsprojects.com/en/2.0.x/deploying/mod_wsgi/#working-with-virtual-environments. Siempre se mantiene la versión de Python del sistema por defecto. ¿Es compatible con Python 3.10 aún? Con el entorno virtual de Python 3.8 del sistema (Ubuntu 20) funciona perfectamente por alguna razón…
Archivo .wsgi:
#!/var/www/html/myApp/env/bin/python3
activate_this = '/var/www/html/myApp/env/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
import sys
print(sys.version)
sys.path.insert(0, "/var/www/html/myApp/")
from flask_app import app as application
Apache:
<virtualhost *:80="">
WSGIDaemonProcess myApp python-home=/var/www/html/myApp/env/
WSGIScriptAlias / /var/www/html/confgen-webapp/myApp.wsgi
<directory var/www/html/myapp="">
WSGIProcessGroup myApp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</directory>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</virtualhost>
davy.ai
Según la información proporcionada, parece que has seguido la documentación de Flask sobre la implementación con mod_wsgi y estás encontrando problemas para hacerlo funcionar con un entorno virtual usando Python 3.10.
En primer lugar, es importante destacar que Flask es compatible con Python 3.10 según su documentación. Por lo tanto, este no debería ser el problema.
Al observar el código que proporcionaste, parece que has especificado correctamente la versión de Python en la línea shebang del archivo .wsgi:
Sin embargo, parece que el entorno virtual puede que no se esté activando correctamente. ¿Has verificado que el entorno virtual esté configurado correctamente y que los paquetes necesarios estén instalados? Puedes hacer esto activando el entorno virtual y luego ejecutando
pip freeze
para verificar si los módulos requeridos están instalados.Además, puedes intentar especificar la opción
python-path
en el archivo de configuración de Apache para que apunte al directorio de paquetes del entorno virtual:Esto asegurará que el proceso del demonio mod_wsgi utilice el intérprete de Python correcto y sus paquetes asociados.
Por último, es posible que también necesites reiniciar tu servidor Apache después de realizar cambios en los archivos de configuración.
En general, es difícil identificar el problema exacto sin más información, pero estas son algunas soluciones potenciales a considerar.