我在django项目中使用exiftool
,但是django似乎无法运行它。
我不知道如何找到原因,因为当我使用exiftool
调用流程时没有错误发生。我认为这是权限问题。当我在终端中运行exiftool -j <image>
时,一切正常,并且得到正确的结果,但是当我使用下面的代码时,我收到一条错误消息,提示django无法运行exiftool
:>
cmd_get_meta = 'exiftool -j "{filename}"'.format(filename=absolute_file_path)
process = subprocess.Popen(cmd_get_meta,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
shell=True)
raw_result = process.communicate()
meta = json.loads(str(raw_result[0], 'utf-8'))[0]
错误是:
File "/usr/lib/python3.5/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
因此,显然exiftool -j "{filename}"
不是由Django运行的。
其他信息:我更新了exiftool
后出现了此问题,并且我确定代码是正确的。 django由uWSGi
运行,此命令显示正在运行exiftool和uwsgi的用户:
$ ps aux | grep uwsgi
backend 1243 0.0 0.0 14224 988 pts/9 S+ 14:52 0:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn uwsgi
www-data 20469 0.0 0.7 222664 63984 ? S 2018 32:55 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/hamclassy.ini --daemonize /var/log/uwsgi/app/hamclassy.log
www-data 32357 0.0 0.8 473188 67804 ? Sl 14:18 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/hamclassy.ini --daemonize /var/log/uwsgi/app/hamclassy.log
www-data 32358 0.0 0.8 473188 67436 ? Sl 14:18 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/hamclassy.ini --daemonize /var/log/uwsgi/app/hamclassy.log
www-data 32362 0.0 0.8 476604 67700 ? Sl 14:18 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/hamclassy.ini --daemonize /var/log/uwsgi/app/hamclassy.log
www-data 32363 0.0 0.8 472792 67296 ? Sl 14:18 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/hamclassy.ini --daemonize /var/log/uwsgi/app/hamclassy.log
www-data 32368 0.0 0.9 482496 74316 ? Sl 14:18 0:01 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/hamclassy.ini --daemonize /var/log/uwsgi/app/hamclassy.log
www-data 32372 0.0 0.8 476348 67296 ? Sl 14:18 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/hamclassy.ini --daemonize /var/log/uwsgi/app/hamclassy.log
www-data 32376 0.0 0.8 477884 69996 ? Sl 14:18 0:01 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/hamclassy.ini --daemonize /var/log/uwsgi/app/hamclassy.log
www-data 32377 0.0 0.8 477116 68968 ? Sl 14:18 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/hamclassy.ini --daemonize /var/log/uwsgi/app/hamclassy.log
$ ps aux | grep exiftool
backend 1233 0.0 0.0 14224 1016 pts/9 S+ 14:52 0:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn exiftool
为什么从代码中调用exiftool
时不运行?