Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 停靠的Django测试只查看第一个$PATH位置_Python_Django_Linux_Docker_Django Tests - Fatal编程技术网

Python 停靠的Django测试只查看第一个$PATH位置

Python 停靠的Django测试只查看第一个$PATH位置,python,django,linux,docker,django-tests,Python,Django,Linux,Docker,Django Tests,我正在Docker容器中运行一个Django测试套件,其中一些测试使用了一个我必须安装的程序(wkhtmltopdf)。现在我可以看到它已正确安装: $wkhtmltopdf--版本 wkhtmltopdf 0.12.5 但由于某种原因,Django测试无法使用它。安装位置肯定在我的$PATH上(从第三个元素到最后一个元素): $echo$PATH /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/s

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

$wkhtmltopdf--版本
wkhtmltopdf 0.12.5
但由于某种原因,Django测试无法使用它。安装位置肯定在我的
$PATH
上(从第三个元素到最后一个元素):

$echo$PATH
/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/sbin:/bin
$find/-name wkhtmltopdf
/usr/bin/wkhtmltopdf
但是,当我运行测试时,我得到一个堆栈跟踪,其结尾为:

OSError:未找到wkhtmltopdf可执行文件:“/usr/local/bin/wkhtmltopdf”
如果此文件存在,请检查此进程是否可以读取它。否则请安装wkhtmltopdf-https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf
现在没有
/usr/local/bin/wkhtmltopdf
,这是绝对正确的,因为它安装在其他地方(
/usr/bin/
),但这两个位置都在
$PATH

我已尝试将
/usr/bin/
移动到
$PATH
的开头,但随后出现错误:

回溯(最近一次呼叫最后一次):
文件“/manage.py”,第8行,在
从django.core.management导入从命令行执行
ImportError:没有名为django.core.management的模块
大概是因为它现在在
/usr/bin/
中查找
django
,而实际上它在
usr/local/bin/
中,它不再是
$PATH
上的第一个位置


我不确定问题是Docker问题、Django问题、测试问题,还是只是我误解了这里发生的一件或多件事。

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

config=pdfkit.configuration(wkhtmltopdf=settings.wkhtmltopdf\u-BIN)
快速查看Django设置文件后,设置为:

WKHTMLTOPDF_-BIN='/usr/local/BIN/WKHTMLTOPDF'

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

向我们展示了一个完整的工作流,其中再现了问题,包括所有docker命令和Dockerfile!Dockerfile中是否有
apt get install wkhtmltopdf