ローカルマシン上のPython3からクラウドサーバ上のPython2に移行する際に検出したエラーと対処をまとめます。
”ローカルマシン上のPython3”では動作していたコードを移行したので、エラー原因は、Pythonのバージョン差異かクラウド環境のなどの環境差異です。
エラーメッセージ:SyntaxError: Non-ASCII character ‘\x95’ in file xxxx.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
原因:環境依存、文字コードを認識していない
対処:一番最初に次の1行を追加する。
# -*- coding: utf-8 -*-
エラーメッセージ:in from bs4 import BeautifulSoup ImportError: No module named bs4
原因:環境依存、 BeautifulSoup ライブラリが使えない?
対処:→とりあえず 、 BeautifulSoup を使わない実装に変更
エラーメッセージ:Traceback (most recent call last): File “xxxx.py”, line XX, in import urllib.request ImportError: No module named request
原因: Pythonバージョン依存 、 Python2と3で、urllibのライブラリ構成が異なる
対処:Python2用のコードに書き換え
エラーメッセージ:raceback (most recent call last):
File “xxxx.py”, line XX, in
saveFile.write(res.content)
AttributeError: addinfourl instance has no attribute ‘content’
原因: Pythonバージョン依存 移行不備?
対処: Python2用のコードに書き換え
エラーメッセージ:Traceback (most recent call last):
File “xxxx.py”, line XX, in
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 9-27: ordinal not in range(128)
→ 修正 http://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html