【问题标题】:ImportError: No module named selenium cronjob MacImportError:没有名为 selenium cronjob Mac 的模块
【发布时间】:2017-10-20 10:58:22
【问题描述】:

我正在尝试自动化一个 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 Sat May 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)

Traceback(最近一次调用最后一次):文件“READY.py”,第 12 行,在 from selenium import webdriver ImportError: No module named selenium

python脚本路径如下:

Users/Saleh/Desktop/MMM/READY.py

请帮忙,谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      HOME=<your_home_dir>
      PYTHONPATH=<path_to_dist_packages>
      

      【讨论】:

        【解决方案3】:

        我和@Mosaleh95 有同样的问题..

        我创建了一个 Python 程序,它可以成功运行(直接来自 Pycharm)或 CLI。

        当我在 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 的答案,这似乎指向一个丢失的网络驱动程序(而不是 Selenium self 丢失)。

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

        我怀疑我们应该问的问题是 “我怎样才能知道 cron 作业在什么环境下运行,以便我可以运行带有必要库的脚本?我怎样才能改变那个环境? " 我不知道为什么环境会与 CLI 执行不同。

        谢谢

        【讨论】:

        • 道歉 - 你是对的 - 我将修改我的回复以提及 Mosaleh95。我要问的问题是,我怀疑 Mosaleh95 实际上试图找到并回答的是“我怎样才能知道 cron 作业在什么环境下运行,以便我可以运行带有必要库的脚本?怎么能我改变那个环境?”我将在上面修改我的帖子。谢谢。
        • 无论如何我都不是蟒蛇。我想说的是你的帖子读起来像一个问题,而不是一个答案。我已经阅读了您修改后的帖子,但我仍然有点不确定:)
        【解决方案4】:

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

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

        解决方案现在对我有用。

        步骤:

        • 在终端类型中:

          echo PATH

        • 复制您返回的全文。

        • 打开你的 crontable

          crontab -e

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

        • 编辑文本,使其以 PATH=$PATH:/Users/&lt;USERNAME&gt;

        我的 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 调度程序执行。

        【讨论】:

          猜你喜欢
          • 2016-11-20
          • 2020-07-24
          • 1970-01-01
          • 1970-01-01
          • 2019-06-24
          • 2013-03-11
          • 2023-03-18
          • 1970-01-01
          • 2016-08-13
          相关资源
          最近更新 更多