ImportError:没有名为selenium cronjob Mac的模块

时间:2017-05-20 10:35:35

标签: python macos selenium-webdriver cron selenium-chromedriver

我试图自动化python脚本每分钟运行但似乎无法弄清楚为什么我会收到错误:

ImportError: No module named selenium

虽然:

pip freeze
...
selenium==3.4.2
...

并且脚本在命令行中运行。

这就是我在做的事情:

* * * * * cd /Users/Saleh/Desktop/MMM && python READY.py

错误:

  

crontab:安装新的crontab您在/ var / mail / Saleh中有新邮件   Mohameds-Air:〜Saleh $ mail邮件版本8.1 6/6/93。输入?求助。   “/ var / mail / Saleh”:1条消息1新

     
    

N 1 Saleh@Mohameds-Air.l星期六5月20日13:31 22/816“Cron cd     / Users / Saleh / Desktop / MMM&& python READY.py X-Cron-Env:      X-Cron-Env:X-Cron-Env:      X-Cron-Env:X-Cron-Env:      日期:星期六,2017年5月20日13:31:01 +0300(EEST)

  
     

回溯(最近一次呼叫最后一次):文件“READY.py”,第12行,in          来自selenium import webdriver ImportError:没有名为selenium的模块

python脚本的路径如下:

Users/Saleh/Desktop/MMM/READY.py

请帮助,谢谢!

4 个答案:

答案 0 :(得分:0)

在将其作为cron运行时,必须指定指定selenium驱动程序的路径。例如

export PATH=path/to/your/selenium/driver/folder:$PATH && cd /Users/Saleh/Desktop/MMM && python READY.py

答案 1 :(得分:0)

我在Ubuntu 18.04上遇到了同样的问题。

对我来说,解决方法是制作一个调用python脚本的shell脚本,并在shell脚本的顶部设置以下内容:

HOME=<your_home_dir>
PYTHONPATH=<path_to_dist_packages>

答案 2 :(得分:0)

我和@ Mosaleh95有同样的问题。

我创建了一个可以成功运行(直接从Pycharm)或从CLI运行的python程序。

当我在Mac OSX上设置cron作业时。

cron尝试执行它时,会引发以下错误

Traceback (most recent call last):
  File "cli_multi_address_scraper.py", line 4, in <module>
    from selenium import webdriver
ModuleNotFoundError: No module named 'selenium' 

如果我跑步

Pip Freeze 

硒3.141.0

我已经看过以上两个答案。

我不确定蒂莫西·奎因(Timothy Quinn)提出的与Ubuntu和Mac OSX(10.15.6)的异同。

此外,如果我阅读@pseudoanime的答案,那似乎指向缺少的Web驱动程序(不是Selenium self丢失了)。

正如我所说,我可以从Pycharm和CLI运行程序(使用与cron作业相同的命令-包括cd到正确的目录)。

我怀疑我们应该问的问题是”“我如何知道cron作业在什么环境下运行,以便可以运行带有必需库的脚本?如何更改该环境? “ 我不知道为什么环境与CLI执行会有所不同。

谢谢

答案 3 :(得分:0)

我添加此内容是为了回答我自己的问题,该问题是针对上述问题以及我认为原始问题本身提出的。如果我的经验很典型,那么先前的答案都无法直接解决问题。

我的回答是基于SO上的其他两个问题以及另一个站点上的一篇文章。其他问题是5710174254564187

该解决方案现在对我有用。

步骤:

  • 在终端类型中:

    echo PATH

  • 复制您返回的全文。

  • 通过以下方式打开您的crontable

    crontab -e

  • 将文本粘贴到crontab的第一行中,以便将其首先执行。

  • 编辑文本,使其以 PATH=$PATH:/Users/<USERNAME>

我的PATH行显示为 PATH=$PATH:/Users/ian/opt/anaconda3/bin:/Users/ian/opt/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

保存文件,下一次执行crob作业时,该文件应运行。

注意:在我读过的一篇文章中,它建议您还需要运行bash脚本来激活Anaconda / Miniconda环境。我发现情况并非如此,我的Python脚本正在根据cron计划程序执行。