我必须部署一个flask应用程序在生产服务器中使用firefox geckodriver。服务器是简单的ubuntu 18.04,安装了nginx。应用程序是imageDetection flask python应用程序。在服务器“localhost:5000”中,应用程序工作正常,但在域或live“127.0.0.1:80”上,它说“消息:'geckodriver'可执行文件需要在PATH中。”
/usr/bin/geckodriver/usr/local/bin/geckodriver /home/administrator/.local/bin/geckodriver
这里/home/administrator是我的默认用户
geckodriver是通过“chmod +x geckodriver”安装的
- selenium = 3.141.0
- geckodriver = 0.26.0
- 浏览次数:76.0.1
- python = 3.6
2条答案
按热度按时间4urapxun1#
解决方案
这是非常简单的下载geckodriver.exe为您的操作系统从谷歌.然后把它放在目录中你正在工作.
适用于Chrome
字符串
适用于Firefox
型
下载Geckodriver
https://github.com/mozilla/geckodriver/releases
0tdrvxhp2#
(我本来想把这个放在评论中,但好吧,我不能评论:)
使用Selenium启用日志记录并详细查看它试图做什么。在我的经验中,将geckodriver放在工作目录中会导致许多其他问题...
你可以像这样启用日志记录(假设是Python):
字符串
另外,您的用户(启动flask应用程序的用户)是否有执行
geckodriver
的权限?我的意思是,大概chmod +x geckodriver
已经涵盖了这一点,但只是为了好玩,检查权限。还有一件事:在启动selenium**之前,在脚本中打印出
$PATH
**的内容(我相信这在os.environ
或类似的东西中是可能的)。另外,我看到你有三个geckodriver(/usr/bin,/usr/local/bin,& /home/administrator/...).它们是相互符号链接的吗?或者它们是分开的geckodriver?如果你愿意的话,我会使用一个geckodriver,并建立其余的链接,但老实说,有一个位置(也许/usr/local/bin)会使用户之间的事情更加一致。
最后一件事:你提到当你在不同的端口(5000 vs 80)上托管服务器时,会发生错误(因为大概
localhost
Map到127.0.0.1)。在端口80上托管应用程序需要sudo
,不是吗?这可能会改变环境,也许?也许检查/etc/bash.bashrc
?我希望这能帮上一点忙...