【问题标题】:Python script runs flawless when executed in shell, but throws unicode errors when executed as systemd servicePython 脚本在 shell 中执行时运行完美,但在作为 systemd 服务执行时抛出 unicode 错误
【发布时间】:2019-09-12 18:27:44
【问题描述】:

我有一个在screen 中完美运行的python 程序。现在我想从使用屏幕运行脚本切换到systemd 服务。该程序是一个电报机器人,它经常发送包含像 Schweineschnitzel "Toscana" mit würziger Kräuterpanade 这样的变音符号的文本,但当它作为 shell 脚本执行时,即使在将文本打印到终端时也能完美运行。

我没有对代码本身进行任何更改,我只是将文件作为ExecStart 放在一个.service-File 中,并希望程序能够正常工作。

但是,当我尝试打印我的文本时,我从systemctl status 得到这个输出作为错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 132: ordinal not in range

在 systemd-Service 中是否有任何不同的环境需要我必须配置,以便由于某种原因在一种情况下可以正确处理非 ascii 符号,而在另一种情况下则不能?

【问题讨论】:

标签: python unicode systemd


【解决方案1】:

在您的 *.service 文件中设置 PYTHONIOENCODING。文件示例:

[Unit]
Description=Admin App
Requires=wallet.socket
After=network.target

[Service]
WorkingDirectory=/home/wallet/wallet/src
Environment="PYTHONPATH=/home/wallet/wallet"
Environment="PYTHONUNBUFFERED=1"
Environment="PYTHONIOENCODING=UTF8"
Environment="DJANGO_SETTINGS_MODULE=settings.prod"
ExecStart=gunicorn src.wsgi

文档:https://docs.python.org/3/using/cmdline.html#envvar-PYTHONIOENCODING

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2017-12-05
    • 2011-10-04
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多