如何为通过systemd运行的python脚本设置LANG?

ebdffaop  于 2023-02-15  发布在  Python
关注(0)|答案(1)|浏览(99)

在我运行程序的服务器上,默认编码是latin-1,当我试图运行python脚本时,我得到了一个错误,如'latin-1' codec can't encode characters in position等。
我知道您可以使用dpkg-reconfigure locales更改默认语言环境,但对我来说,另一种方式更方便:

LANG=en_US.utf8 python3.11 main.py

现在的问题是:当我使用systemctl运行脚本时,有没有办法放置LANG
我使用这个script.service

[Unit]
Description=My Script
After=syslog.target
 
[Service]
Type=simple
User=username
Group=sudo
WorkingDirectory=/home/username/project_dir/
ExecStart=/usr/bin/python3.11 main.py
 
[Install]
WantedBy=multi-user.target
5gfr0r5j

5gfr0r5j1#

如果您只想覆盖LANG变量,则可以在服务定义中添加Environment行,例如

[Unit]
Description=My Script
After=syslog.target
 
[Service]
Type=simple
User=username
Group=sudo
WorkingDirectory=/home/username/project_dir/
Environment="LANG=en_US.utf8"
ExecStart=/usr/bin/python3.11 main.py
 
[Install]
WantedBy=multi-user.target

您还可以将ExecStart替换为env...

ExecStart=/usr/bin/env LANG=en_US.utf8 /usr/bin/python3.11 main.py

相关问题