首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dockerized测试只查看第一个$PATH位置

Dockerized测试只查看第一个$PATH位置
EN

Stack Overflow用户
提问于 2020-06-03 12:52:36
回答 1查看 292关注 0票数 0

我正在一个Docker容器中运行Django测试套件,其中一些测试使用了一个apt-get install (wkhtmltopdf)程序。现在我可以看到它已经正确安装了:

代码语言:javascript
复制
$ wkhtmltopdf --version
wkhtmltopdf 0.12.5

但出于某种原因Django测试不能使用它。安装位置肯定在我的$PATH (第三到最后一个元素)上:

代码语言:javascript
复制
$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ find / -name wkhtmltopdf
/usr/bin/wkhtmltopdf

然而,当我运行测试时,我会得到一个堆栈跟踪,其结尾是:

代码语言:javascript
复制
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的开头,但随后得到了错误:

代码语言:javascript
复制
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问题、测试问题,还是我误解了这里发生的一件或多件事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-04 17:17:36

因此,该项目使用pdfkit作为wkhtmltopdf的包装器,其中包括直接设置wkhtmltopdf路径:

代码语言:javascript
复制
config = pdfkit.configuration(wkhtmltopdf=settings.WKHTMLTOPDF_BIN)

在快速查看Django设置文件之后,它被设置为:

代码语言:javascript
复制
WKHTMLTOPDF_BIN = '/usr/local/bin/wkhtmltopdf'

谜团解开了!在本例中,修复方法只是将其设置为所需的实际路径(/usr/bin/wkhtmltopdf)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62173308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档