我正在尝试使用systemd为我的django项目设置gunicorn,但它无法加载我项目的另一个库。
File "/home/ubuntu/venv/lib/python3.4/importlib/__init__.py", line 109, in import_module
gunicorn[6043]: return _bootstrap._gcd_import(name[level:], package, level)
gunicorn[6043]: ImportError: No module named 'templates'
模板是项目的另一部分,位于单独的目录中。如果我尝试在/home/ubuntu/templates/
中运行没有$PYTHONPATH
的网站,我会收到同样的错误,我已经在我的systemd单元文件中添加了pythonpath但它没有做任何事情。
我可以使用此命令成功运行gunicorn:
/home/ubuntu/venv/bin/gunicorn --pid /tmp/pid-gunicorn site_gfa.wsgi:application -b 0.0.0.0:8083
但我在systemd
中失败了系统单元文件
[Unit]
Description="Site"
After=network.target
[Service]
PIDFile=/tmp/pid-gunicorn
User=ubuntu
Group=users
Environment=PYTHONPATH='/home/ubuntu/templates/'
WorkingDirectory=/home/ubuntu/gfa-apps/
ExecStart=/home/ubuntu/venv/bin/gunicorn --pid /tmp/pid-gunicorn site_gfa.wsgi:application -b 0.0.0.0:8083
PrivateTmp=true
Type=forking
[Install]
WantedBy=multi-user.target
我用Python 3.4和gunicorn 19.4.5运行CentOS7 提前谢谢!
答案 0 :(得分:2)
解决了这个问题,systemd单元文件中的Environment var不应该有引号。
[Unit]
Description="Site"
After=network.target
[Service]
PIDFile=/tmp/pid-gunicorn
User=ubuntu
Group=users
Environment=PYTHONPATH=/home/ubuntu/templates/
WorkingDirectory=/home/ubuntu/gfa-apps/
ExecStart=/home/ubuntu/venv/bin/gunicorn --pid /tmp/pid-gunicorn site_gfa.wsgi:application -b 0.0.0.0:8083
PrivateTmp=true
Type=forking
[Install]
WantedBy=multi-user.target