You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django部署Apache/mod_wsgi后安装xhtml2pdf遇PIL _imaging导入错误

问题分析与解决办法

这个问题确实和mod_wsgi的运行环境有关,核心原因是mod_wsgi加载的Python环境与你命令行使用的虚拟环境不一致,导致PIL库无法被正确导入。以下是具体排查和解决方向:

1. 确认mod_wsgi是否正确加载虚拟环境

检查Apache配置文件中的WSGIDaemonProcess和WSGIProcessGroup配置,确保指定了你的项目虚拟环境路径:

WSGIDaemonProcess myproject python-home=/home/ubuntu/myproject/env
WSGIProcessGroup myproject

修改配置后,必须重载Apache服务(sudo systemctl reload apache2),否则新配置不会生效。

2. 重新安装Pillow库

安装xhtml2pdf时可能自动更新或重新安装了Pillow,但mod_wsgi环境中的Pillow可能存在编译损坏或依赖缺失:

  • 进入虚拟环境,卸载现有Pillow:
    source /home/ubuntu/myproject/env/bin/activate
    pip uninstall -y Pillow
    
  • 先安装系统层面的编译依赖(Ubuntu系统):
    sudo apt-get install libjpeg-dev zlib1g-dev
    
  • 重新安装Pillow:
    pip install Pillow
    

安装过程中要确保没有编译错误,否则说明系统依赖仍有缺失。

3. 检查mod_wsgi与Python版本的兼容性

mod_wsgi需要和虚拟环境的Python版本完全匹配(均为3.10):

  • 运行mod_wsgi-express module-config,查看输出中的Python路径是否指向你的虚拟环境3.10版本。
  • 如果版本不匹配,需要重新编译mod_wsgi:
    source /home/ubuntu/myproject/env/bin/activate
    pip install mod_wsgi
    

然后将新生成的mod_wsgi模块路径更新到Apache配置中。

4. 修复文件权限问题

Apache运行用户(通常是www-data)可能没有权限读取虚拟环境中的PIL库文件:

sudo chown -R ubuntu:www-data /home/ubuntu/myproject/env
sudo chmod -R 755 /home/ubuntu/myproject/env

确保虚拟环境目录及所有子文件、子目录都有可读权限。

内容的提问来源于stack exchange,提问作者Pathia Nanto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:50:25