nginx 消息:'geckodriver'可执行文件需要在PATH中

z3yyvxxp  于 12个月前  发布在  Nginx
关注(0)|答案(2)|浏览(201)

我必须部署一个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
4urapxun

4urapxun1#

解决方案

这是非常简单的下载geckodriver.exe为您的操作系统从谷歌.然后把它放在目录中你正在工作.

适用于Chrome

driver = webdriver.Chrome('./chromedriver')

字符串

适用于Firefox

driver = webdriver.Firefox('./geckodriver')

  • 下载你的操作系统的Geckodriver,并将其与上面的代码放在你的python3文件相同的目录中。如果你的PC中有Chrome而不是Firefox,那么就去chromedriver。*

下载Geckodriver
https://github.com/mozilla/geckodriver/releases

0tdrvxhp

0tdrvxhp2#

(我本来想把这个放在评论中,但好吧,我不能评论:)
使用Selenium启用日志记录并详细查看它试图做什么。在我的经验中,将geckodriver放在工作目录中会导致许多其他问题...
你可以像这样启用日志记录(假设是Python):

import logging
logger = logging.getLogger('selenium')
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler( 'selenium.log' )
logger.addHandler(handler)
logging.getLogger('selenium.webdriver.remote').setLevel(logging.WARN)
logging.getLogger('selenium.webdriver.common').setLevel(logging.DEBUG)

字符串
另外,您的用户(启动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)上托管服务器时,会发生错误(因为大概localhostMap到127.0.0.1)。在端口80上托管应用程序需要sudo,不是吗?这可能会改变环境,也许?也许检查/etc/bash.bashrc
我希望这能帮上一点忙...

相关问题