【发布时间】:2020-09-22 04:17:59
【问题描述】:
我在 Docker 容器中运行 Django 测试套件,其中一些测试使用了我必须使用的程序 apt-get install (wkhtmltopdf)。现在我可以看到它已正确安装:
$ wkhtmltopdf --version
wkhtmltopdf 0.12.5
但由于某种原因,Django 测试无法使用它。安装位置肯定在我的$PATH(倒数第三个元素):
$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ find / -name wkhtmltopdf
/usr/bin/wkhtmltopdf
但是,当我运行测试时,我会得到一个以以下结尾的堆栈跟踪:
OSError: No wkhtmltopdf executable found: "/usr/local/bin/wkhtmltopdf"
If this file exists please check that this process can read it. Otherwise please install wkhtmltopdf - https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf
现在没有/usr/local/bin/wkhtmltopdf 是绝对正确的,因为它安装在其他地方(/usr/bin/),但是这两个位置都在$PATH。
我尝试将 /usr/bin/ 移动到 $PATH 的开头,但随后出现错误:
Traceback (most recent call last):
File "./manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
大概是因为它现在在/usr/bin/ 中寻找django,而实际上它在usr/local/bin/ 中,这不再是$PATH 上的第一个位置。
我不确定问题是 Docker 问题、Django 问题、测试问题,还是只是我误解了这里发生的一件或多件事情。
【问题讨论】:
-
向我们展示一个完整的工作流程,它可以重现问题,包括所有 docker 命令和 Dockerfile!
-
你的 Dockerfile 中有
apt-get install wkhtmltopdf吗?
标签: python django linux docker django-tests