2017-06-08 5 views
-1

私はcrontabに公共の福祉プロジェクトのpythonスクリプトを実行させたいと思います。crontabサイトモジュールのインポートに失敗しました

Pycharmでスクリプトを正常に実行できます。

私はcrontabで実行するとエラーが発生します。

環境:Mac OSの、python3.5

私は 'のcrontab -e' と入力した後、それがあることを示していますの/ varに次のように

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 

が、私はエラーを得ました/ mail/username:

From [email protected] Thu Jun 8 14:32:00 2017 
Return-Path: <[email protected]> 
X-Original-To: yy 
Delivered-To: [email protected] 
Received: by YY.local (Postfix, from userid 501) 
    id A7F1F38FFFCC; Thu, 8 Jun 2017 14:32:00 -0500 (CDT) 
From: [email protected] (Cron Daemon) 
To: [email protected] 
Subject: Cron <[email protected]> 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: <[email protected]> 
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) 

私はこのエラーで2時間を過ごしました。 しかし、解決策はありません... 助けてください。 ありがとう!

私はpython3.5を使用するので、デフォルトのエンコーディングはUTF-8です。 UnicodeDecodeErrorが異常です...

+0

奇妙なことに気づいています:1)PATH上の実行ファイル:/ Users/yy/anaconda/bin/python3'; 2)anacondaのインストールはPATH上の '/ usr/bin'の後に来るので、かなり無駄になります。 –

+0

私はsthを明確にしたいと思います。私はUICのphd候補者であり、私は公共福祉プロジェクトに取り組んでいます。問題:スクリプトはpycharmで正常に動作しますが、contrabでエラーが発生しました。それはcontrabのバグがあると信じることは合理的です。私は数時間デバッグし、最終的にはエンコーディングの問題であることがわかります。はい、質問が答えによく合わないかもしれません。しかし、どのように分析して問題を解決するかは、手順です。ありがとう! – user2803482

答えて

-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:

李場合ne.startswith(( "インポート"、 "輸入\ T")): - > line.startswith((B "輸入"、B "インポート\ tの"))の場合:

ライン170:

DIR、dircase = makepath(sitedir、ライン) - > DIR、dircase = makepath(sitedir、STR(ライン))

私はそれは、「サイトを変更することをお勧めしますとは思いません。アナコンダでは「py」と表示されます...

しかし、これで問題は解決しました。 それが役立つことを願っています。

+0

ASCIIエンコーディングでファイルを保存し、変なものにユニコードエスケープを使用するのはなぜですか? –

+0

あなたの回答はまた、あなたの質問が実際に提供する情報がどれほど少ないかを強調しているので、将来その質問が特に有用になる可能性は低くなります。 –

+0

あなたのアドバイスをいただきありがとうございます。 site.pyは実際にAnacondaによって管理されているsite-packagesのファイルを読み込みます.... python3.5のデフォルトのエンコーディングはutf8です。したがって、site-packages内のファイルはutf8でエンコードされます。私は問題がおそらく、最近ユニコードをエンコードするいくつかのパッケージをインストールしていると思うが、これは問題を抱えている。 – user2803482

関連する問題