Python 3.x crontab无法导入站点模块

Python 3.x crontab无法导入站点模块,python-3.x,cron,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/

我希望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)
来自yy@YY.local2017年6月8日星期四14:32:00
返回路径:
X-原件至:yy
交付给:yy@YY.local
接收:由YY.local(后缀,来自userid 501)
id A7F1F38FFFCC;2017年6月8日星期四14:32:00-0500(CDT)
发件人:yy@YY.local(Cron守护进程)
致:yy@YY.local
主题:Cron 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:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
消息Id:
日期:2017年6月8日星期四14:32:00-0500(CDT)
无法导入站点模块
回溯(最近一次呼叫最后一次):
文件“/Users/yy/anaconda/lib/python3.5/site.py”,第567行,在
main()
文件“/Users/yy/anaconda/lib/python3.5/site.py”,第550行,在main中
已知路径=addsitepackages(已知路径)
addsitepackages中的文件“/Users/yy/anaconda/lib/python3.5/site.py”,第327行
addsitedir(sitedir,已知路径)
文件“/Users/yy/anaconda/lib/python3.5/site.py”,第206行,在addsitedir中
addpackage(站点目录、名称、已知路径)
文件“/Users/yy/anaconda/lib/python3.5/site.py”,第162行,在addpackage中
对于n,枚举(f)中的行:
文件“/Users/yy/anaconda/lib/python3.5/encodings/ascii.py”,第26行,解码
返回编解码器。ascii_解码(输入,自身错误)[0]
UnicodeDecodeError:“ascii”编解码器无法解码位置127处的字节0xe7:序号不在范围内(128)
我花了两个小时处理这个错误。 然而,没有解决办法。。。 请帮忙。 谢谢

# 我使用python3.5,所以默认编码是utf-8。这个 独角兽很奇怪


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

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

我通过修改path=/Users/user\u name/anaconda/lib/python3.5/site.py中的site.py文件来解决这个问题

第158行:

第163行:

第166行:

if line.startswith((“导入”,“导入”\t)):->if line.startswith((b“导入”,b“导入”):

第170行:

dir,dircase=makepath(sitedir,line)->dir,dircase=makepath(sitedir,str(line))

我认为修改anaconda中的“site.py”不是一个好主意

但这可以解决问题。
希望它能有所帮助。

我注意到了一些奇怪的事情:1)您的路径上有一个可执行文件:
/Users/yy/anaconda/bin/python3
;2) anaconda安装在您路径上的
/usr/bin
之后,使其非常有用。我想澄清一些事情。我是UIC的一名博士候选人,我从事一个公益项目(收集和传播失踪人员信息,一年多没有付款)。问题:该脚本在pycharm中运行良好,但在contrab中出错。有理由相信contrab存在漏洞。我调试了几个小时,最后发现是编码问题。是的,也许这个问题与答案不太相符。然而,这是我如何分析和解决问题的过程。谢谢你为什么不干脆用ascii编码保存文件,然后用unicode转义来处理奇怪的东西呢?你的回答还突出了你的问题实际上提供的信息是多么的少,这使得这个问题对将来的人来说不太可能特别有用。谢谢你的建议。py实际上读取由Anaconda管理的站点包中的文件……python3.5的默认编码是utf8。因此,站点包中的文件使用utf8编码。我想问题可能是我最近安装了一些encoding=unicode的软件包,这导致了问题的出现……我想你是对的。我们可以找到encoding=unicode的文件,并将其另存为utf8…在这种情况下,我们不必修改站点。py抱歉给您带来不便。一开始,我错误地认为这是crontab的bug。。。因为我可以在pycharm中成功运行脚本。。。
    f = open(fullname, "rb") ->  f = open(fullname, "rb") 
    if line.startswith("#"): ->  if line.startswith(b"#"):