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

Django以服务运行时pyhtml2pdf报NoneType无split属性错误求助

问题分析与解决

问题根源

报错'NoneType' object has no attribute 'split'出现在webdriver_manager的chrome.py文件中,本质是systemd服务环境下找不到Chrome浏览器的可执行文件,导致webdriver_manager无法获取Chrome版本信息,返回None值引发split操作失败。

同时你的systemd服务配置存在两处明显问题:

  • Environment="PATH=/var/www/myProject/env/bin/activate"配置错误,PATH应指向目录而非activate脚本文件
  • 使用source activate的方式在systemd中不够可靠,systemd的执行环境和用户shell环境差异较大

解决方案

1. 修正systemd服务配置

修改/etc/systemd/system/myProject.service文件,调整内容如下:

[Unit]
Description=myProject_0 project
After=network.target

[Service]
User=root
Group=root
WorkingDirectory=/var/www/myProject
# 正确设置PATH:包含虚拟环境bin目录+系统默认路径,确保能找到Chrome和虚拟环境的python
Environment="PATH=/var/www/myProject/env/bin:/usr/bin:/bin"
# 直接使用虚拟环境的python执行,无需source激活,更稳定
ExecStart=/var/www/myProject/env/bin/python manage.py runserver
StandardOutput=append:/var/log/myProject/myProject.log
StandardError=append:/var/log/myProject/myProject_error.log

[Install]
WantedBy=multi-user.target

修改后重新加载systemd配置并重启服务:

systemctl daemon-reload
systemctl restart myProject.service

2. 确保Chrome在systemd环境中可访问

如果调整服务配置后仍报错,先确认Chrome的安装路径:

which google-chrome

得到路径(比如/usr/bin/google-chrome)后,可通过两种方式指定:

方式一:在systemd服务中添加Chrome路径环境变量

在[Service]段新增配置:

Environment="CHROME_BIN=/usr/bin/google-chrome"

方式二:在代码中直接指定Chrome路径

在调用pyhtml2pdf的代码里明确传入Chrome二进制文件路径:

from pyhtml2pdf import converter

# 替换为你的Chrome实际路径
converter.convert(
    source='path/to/input.html',
    target='path/to/output.pdf',
    chrome_path='/usr/bin/google-chrome'
)

3. 验证配置

重启服务后测试HTML转PDF功能,查看错误日志确认问题是否解决:

cat /var/log/myProject/myProject_error.log

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:20:00