我试图自动化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
请帮助,谢谢!
答案 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上的其他两个问题以及另一个站点上的一篇文章。其他问题是57101742和54564187
该解决方案现在对我有用。
步骤:
在终端类型中:
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计划程序执行。