fc2ブログ

macOS Sierraでpyenvが動かなかったので

ちょっとハマったのでメモ。

参考にしたのはこちらの記事でした。

Pyenvの使い方 - Qiita

インストールはうまく行って別バージョンのpythonもインストールできたのですが、切り替えがうまくいかない。で、ググったらこちらに到着。

Pyenv not working on Sierra? · Issue #821 · pyenv/pyenv · GitHub

ここには、.bashrcに以下の内容を書けよとのこと。

export PATH="/Users/username/.pyenv:$PATH"
eval "$(pyenv init -)"

最初の記事との違いはexportするパス。なので、.bashrcには

export PATH="$HOME/.pyenv:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

と書いて、source ~/.bashrcとやったらうまくバージョンを切り替えられるようになりました。

スポンサーサイト




Python@2017/11/10 05:31   | 1 comments | 0 trackbacks |

Python2でcron使ってBeatifulSoupでスクレイピング処理したらハマった

のでメモ。

ターミナルからPython xxx.pyとやる分には問題なく動いていたのですが、cronに登録するとうまく動かない。問題がどこかを特定するのにもワタワタしてました。

まずは、cronでの実行時のログをきちんと見ようということで。こちらを参考にさせてもらってログ出力。

cron 実行時エラーに気づくポイント3つ - AWS / PHP / Python ちょいメモ

そしたら、初め疑っていたBeautifulSoupは悪くなくて、これまで何度か遭遇していた「UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-12: ordinal not in range(128)」というもの。でも、何でだ、何が違うんだと色々調べていたらこちらにたどり着きました。

Python2で文字列を処理する際の心掛け - Qiita

でも、未だにPython2の文字列の取り扱いはよくわかっていません。末尾のこちらに助けられました。

PYTHONIOENCODINGという環境変数を指定することで、ロケールによらずに使用するエンコード方式を固定できるとのこと。これを指定すれば、いちいちエンコードしなくて良さそう。

最終的に以下のようにcronに登録することで無事動くようになりました。

0-59/5 * * * * PYTHONIOENCODING=utf-8 python xxx.py >> error_log 2>&1


Python@2017/10/14 14:10   | 0 comments | 0 trackbacks |

«  | HOME |  »

いろいろ作ったり

プロフィール

icot

Author:icot
総合電気メーカで働く会社員でしたがいい年にも関わらずコンサルに転職。お酒、ジョギング、音楽、本、料理をこよなく愛してます。ここでは、日々感じた事を書き連ねるとともに、いろいろ実験してみたりしてます。
icotfeels[at]gmail.com

これまでに感じたこと