crontab无法导入站点模块

时间:2017-06-08 19:51:42

标签: python-3.x cron

我希望crontab为公益项目运行python脚本。

我可以在Pycharm中成功运行脚本。

当我使用crontab运行它时,出现错误。

  

环境:Mac OS,python3.5

输入' crontab -e'后,它显示:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/Users/yy/anaconda/bin/python3:/Users/yy/anaconda/bin/


32 14 * * * PATH=$PATH:/Users/yy/anaconda/bin/ cd /Users/yy/PycharmProjects/selenium_test/ &&  /Users/yy/anaconda/bin/python3 /Users/yy/PycharmProjects/selenium_test/selenium_test.py >> /Users/yy/PycharmProjects/selenium_test/log.txt

我在/ var / mail / username中收到如下错误:

From yy@YY.local  Thu Jun  8 14:32:00 2017
Return-Path: <yy@YY.local>
X-Original-To: yy
Delivered-To: yy@YY.local
Received: by YY.local (Postfix, from userid 501)
    id A7F1F38FFFCC; Thu,  8 Jun 2017 14:32:00 -0500 (CDT)
From: yy@YY.local (Cron Daemon)
To: yy@YY.local
Subject: Cron <yy@YY> PATH=$PATH:/Users/yy/anaconda/bin/ cd /Users/yy/PycharmProjects/selenium_test/ &&  /Users/yy/anaconda/bin/python3 /Users/yy/PycharmProjects/selenium_test/selenium_test.py >> /Users/yy/PycharmProjects/selenium_test/log.txt
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/Users/yy/anaconda/bin/python3:/Users/yy/anaconda/bin/>
X-Cron-Env: <LOGNAME=yy>
X-Cron-Env: <USER=yy>
X-Cron-Env: <HOME=/Users/yy>
Message-Id: <20170608193200.A7F1F38FFFCC@YY.local>
Date: Thu,  8 Jun 2017 14:32:00 -0500 (CDT)

Failed to import the site module
Traceback (most recent call last):
  File "/Users/yy/anaconda/lib/python3.5/site.py", line 567, in <module>
    main()
  File "/Users/yy/anaconda/lib/python3.5/site.py", line 550, in main
    known_paths = addsitepackages(known_paths)
  File "/Users/yy/anaconda/lib/python3.5/site.py", line 327, in addsitepackages
    addsitedir(sitedir, known_paths)
  File "/Users/yy/anaconda/lib/python3.5/site.py", line 206, in addsitedir
    addpackage(sitedir, name, known_paths)
  File "/Users/yy/anaconda/lib/python3.5/site.py", line 162, in addpackage
    for n, line in enumerate(f):
  File "/Users/yy/anaconda/lib/python3.5/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 127: ordinal not in range(128)

我花了两个小时来解决这个错误。 然而,没有解决方案工作...... 请帮忙。 谢谢!

  

我使用python3.5,因此默认编码为utf-8。该   UnicodeDecodeError很奇怪......

1 个答案:

答案 0 :(得分:-1)

问题在于编码。 Python3.5的默认值是utf-8。

但是,我安装的某些软件包是用Unicode编码的。

我通过修改path = / Users / user_name / anaconda / lib / python3.5 / site.py中的site.py文件解决了这个问题。

第158行:

    f = open(fullname, "rb") ->  f = open(fullname, "rb") 

第163行:

    if line.startswith("#"): ->  if line.startswith(b"#"):

第166行:

  

如果line.startswith((&#34; import&#34;,&#34; import \ t&#34;)): - &gt;如果line.startswith((b&#34; import&#34;,b&#34; import \ t&#34;)):

第170行:

  

dir,dircase = makepath(sitedir,line) - &gt; dir,dircase = makepath(sitedir,str(line))

我认为修改&#34; site.py&#34;不是一个好主意。在anaconda ...

但这解决了这个问题。 希望它会有所帮助。