【问题标题】:apache wsgi_mod fails to run on python 3.10apache wsgi_mod 无法在 python 3.10 上运行
【发布时间】:2022-01-13 14:27:50
【问题描述】:

我正在使用 django 4 和 python 3.10 开发一个 django 应用程序。 我有一个使用 apache 和 mod_wsgi 的服务器,它曾经使用 python3.8 运行旧应用程序。

我从 3.10 创建了一个虚拟环境。命令行 manage.py 运行良好。

我已经更改了 apache 的配置:

WSGIDaemonProcess my_app310 python-path=/home/ubuntu/my_app310:/home/ubuntu/venv/my_app310/lib/python3.10/site-packages
WSGIProcessGroup my_app310
WSGIScriptAlias / /home/ubuntu/my_app310/my_app310/wsgi.py

但我不断得到:

[mpm_event:notice] AH00489: Apache/2.4.41 (Ubuntu) mod_wsgi/4.6.8 Python/3.8 configured -- resuming normal operations
[core:notice] AH00094: Command line: '/usr/sbin/apache2'
[wsgi:error] mod_wsgi (pid=1724834): Failed to exec Python script file '/home/ubuntu/my_app310/my_app310/wsgi.py'.
[wsgi:error] mod_wsgi (pid=1724834): Exception occurred processing WSGI script '/home/ubuntu/my_app310/my_app310/wsgi.py'.
[wsgi:error]  Traceback (most recent call last):
[wsgi:error]     File "/home/ubuntu/venv/my_app310/lib/python3.10/site-packages/django/utils/timezone.py", line 10, in <module>
[wsgi:error]       import zoneinfo
[wsgi:error] ModuleNotFoundError: No module named 'zoneinfo'

这表明某些东西正在使用 python3.8 而不是 python3.10 (mod_wsgi?) 运行。我错过了什么?

【问题讨论】:

标签: django apache mod-wsgi


【解决方案1】:

WSGI 明确表示File "/home/ubuntu/venv/my_app310/lib/python3.10/site-packages/django/utils/timezone.py", 给定此路径没有名为 zoneinfo 的模块尝试将模块导入您的 python 虚拟环境。 例子: 点安装(模块)

【讨论】:

  • 如果我没记错的话,zoneinfo 从 3.9 开始就是 python 的一部分。我不应该安装它。
【解决方案2】:

要使用某个 Python 版本配置 apache2,只需执行以下操作:

  1. 进入你用 Python3.10 创建的 virtual_env
  2. $ pip install mod_wsgi
  3. $ mod_wsgi-express 模块配置

你会得到类似的输出

LoadModule wsgi_module "..../lib/python3.10/site-packages/mod_wsgi/server/mod_wsgi-py310.cpython-310-x86_64-linux-gnu.so"
SSGIPythonHome "..."
  1. 将 2 行复制到 /etc/apache2/apache2.conf 中
  2. 重启apache2 你应该会看到类似
[mpm_event:notice] AH00489: Apache/2.4.41 (Ubuntu) mod_wsgi/4.6.8 Python/3.10 config .....

【讨论】:

  • 我没有编译,我已经安装了(libapache2-mod-wsgi-py3)。
  • 取决于 libapache2... 包的编译方式。我建议按照作者本人在源页面github.com/GrahamDumpleton/mod_wsgi 上的说明安装 mod_wsgi
  • 我改了上面的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
相关资源
最近更新 更多