python - uWSGI python子进程chrome/firefox失败

标签 python ubuntu nginx flask uwsgi

我在使用 nginx 服务的 uWSGI 下有一个 python flask 应用程序。
python代码调用subprocess.Popen()运行浏览器(即 Firefox、Chrome)但 uWSGI 日志显示错误。
该错误与 linux(ubuntu) 标准命令有关,即 readlink , which , cat和别的。

我怀疑这是与用户访问相关的,但不确定。
uWSGI 服务使用我的用户和 www-data 运行。团体。

Python 代码

import subprocess

@app.route('/api/check/version', methods=['POST'])
def check_version():
    pid = subprocess.Popen(['/usr/bin/firefox', '--version'], stdout=subprocess.PIPE)
    #pid = subprocess.Popen(['/usr/bin/google-chrome', '--version'], stdout=subprocess.PIPE)
    data = pid.communicate()
    return  data

if __name__ == "__main__":
    check_version()

uWSGI 日志
**in case of doing Popen for /usr/bin/firefox
/usr/bin/firefox: 1: /usr/bin/firefox: which: not found

**in case of doing Popen for /usr/bin/google-chrome
/usr/bin/google-chrome-stable: line 8: readlink: command not found
/usr/bin/google-chrome-stable: line 10: dirname: command not found
/usr/bin/google-chrome-stable: line 46: exec: cat: not found
/usr/bin/google-chrome-stable: line 45: exec: cat: not found

uWSGI服务配置
[Unit]
Description=uWSGI instance to serve myproject
After=network.target

[Service]
User=myuser
Group=www-data
WorkingDirectory=/home/gbadmin/myproject
Environment="PATH=/home/gbadmin/myproject/myprojectenv/bin"
ExecStart=/home/gbadmin/myproject/myprojectenv/bin/uwsgi --ini myproject.ini

[Install]
WantedBy=multi-user.target

最佳答案

你给你的PATH一个过于限制性的值:

Environment="PATH=/home/gbadmin/myproject/myprojectenv/bin"

有问题的缺失命令通常出现在 /bin 中。或 /usr/bin ,将这些添加到路径变量可能会解决您的问题
Environment="PATH=/home/gbadmin/myproject/myprojectenv/bin:/usr/bin:/bin"

关于python - uWSGI python子进程chrome/firefox失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45906997/

相关文章:

python - 远程端关闭连接无响应chromedriver

python - 如何用 beautiful soup/python 重建 xml key?

ubuntu - 如何覆盖 dpkg-buildflags CFLAGS?

php - 如何在 nginx 中使用 _GET 参数获得正确的 try_files $uri 指令

ssl - 使用 proxy_pass 会影响 letsencrypt 安装吗?

Java 应用程序通过 Nginx 代理 SSL 连接到 PostgreSQL

python - Python 中哪个更快, "while"或 "for xrange"

python - 正则表达式查找特定单词之后的所有单词?

ubuntu - 使用 Nginx 正确部署多个站点

node.js - Nodejs Sails 命令行不起作用